github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/darwin/callbacks.go (about) 1 //go:build darwin 2 // +build darwin 3 4 package darwin 5 6 /* 7 #cgo CFLAGS: -x objective-c 8 #cgo LDFLAGS: -framework Foundation -framework Cocoa -framework WebKit 9 #import <Foundation/Foundation.h> 10 #import "Application.h" 11 12 #include <stdlib.h> 13 */ 14 import "C" 15 16 import ( 17 "errors" 18 "strconv" 19 20 "github.com/secoba/wails/v2/pkg/menu" 21 ) 22 23 func (f *Frontend) handleCallback(menuItemID uint) error { 24 menuItem := getMenuItemForID(menuItemID) 25 if menuItem == nil { 26 return errors.New("unknown menuItem ID: " + strconv.Itoa(int(menuItemID))) 27 } 28 29 wailsMenuItem := menuItem.wailsMenuItem 30 if wailsMenuItem.Type == menu.CheckboxType { 31 wailsMenuItem.Checked = !wailsMenuItem.Checked 32 C.UpdateMenuItem(menuItem.nsmenuitem, bool2Cint(wailsMenuItem.Checked)) 33 } 34 if wailsMenuItem.Type == menu.RadioType { 35 // Ignore if we clicked the item that is already checked 36 if !wailsMenuItem.Checked { 37 for _, item := range menuItem.radioGroupMembers { 38 if item.wailsMenuItem.Checked { 39 item.wailsMenuItem.Checked = false 40 C.UpdateMenuItem(item.nsmenuitem, C.int(0)) 41 } 42 } 43 wailsMenuItem.Checked = true 44 C.UpdateMenuItem(menuItem.nsmenuitem, C.int(1)) 45 } 46 } 47 if wailsMenuItem.Click != nil { 48 go wailsMenuItem.Click(&menu.CallbackData{MenuItem: wailsMenuItem}) 49 } 50 return nil 51 }