Fix enabled menuitem

This commit is contained in:
Lea Anthony 2022-12-14 19:15:58 +11:00
commit d84cb5b190
No known key found for this signature in database
GPG key ID: 33DAF7BB90A58405
2 changed files with 26 additions and 8 deletions

View file

@ -77,6 +77,7 @@ func main() {
mySystray.SetMenu(myMenu)
})
myMenu.Add("Not Enabled").SetEnabled(false)
myMenu.AddSeparator()
myMenu.AddCheckbox("My checkbox", true).OnClick(menuCallback)
myMenu.AddSeparator()
@ -89,13 +90,17 @@ func main() {
submenu.Add("Submenu item 2").OnClick(menuCallback)
submenu.Add("Submenu item 3").OnClick(menuCallback)
myMenu.AddSeparator()
file4 := myMenu.Add("File 4").OnClick(func(*application.Context) {
println("File 4 clicked")
})
myMenu.Add("File 3").OnClick(menuCallback).SetTooltip("sdfsdfsdfsdf")
myMenu.Add("File 4").OnClick(menuCallback)
myMenu.Add("Click to toggle").OnClick(func(*application.Context) {
enabled := file4.Enabled()
println("Enabled: ", enabled)
file4.SetEnabled(!enabled)
})
myMenu.Add("File 5").OnClick(menuCallback)
//myMenu.AddSubmenu("File 6").OnClick(menuCallback)
mySystray := app.NewSystemTray()
mySystray.SetLabel("Wails is awesome")
if runtime.GOOS == "darwin" {

View file

@ -14,10 +14,13 @@ void* newMenuItem(unsigned int menuItemID, char *label, bool disabled, char* too
// Label
menuItem.title = [NSString stringWithUTF8String:label];
// Process callback
if( disabled ) {
[menuItem setTarget:nil];
} else {
[menuItem setTarget:menuItem];
}
menuItem.menuItemID = menuItemID;
menuItem.action = @selector(handleClick);
menuItem.target = menuItem;
menuItem.enabled = !disabled;
// Tooltip
@ -38,10 +41,20 @@ void setMenuItemLabel(void* nsMenuItem, char *label) {
menuItem.title = [NSString stringWithUTF8String:label];
}
// set menu item disabled
void setMenuItemDisabled(void* nsMenuItem, bool disabled) {
MenuItem *menuItem = (MenuItem *)nsMenuItem;
menuItem.enabled = !disabled;
dispatch_async(dispatch_get_main_queue(), ^{
MenuItem *menuItem = (MenuItem *)nsMenuItem;
printf("setMenuItemDisabled: %d\n", disabled);
[menuItem setEnabled:!disabled];
// remove target
if( disabled ) {
[menuItem setTarget:nil];
} else {
[menuItem setTarget:menuItem];
}
});
}
// set menu item tooltip