diff --git a/v2/internal/ffenestri/traymenu_darwin.c b/v2/internal/ffenestri/traymenu_darwin.c index 9eb9b262..85f269d2 100644 --- a/v2/internal/ffenestri/traymenu_darwin.c +++ b/v2/internal/ffenestri/traymenu_darwin.c @@ -86,10 +86,11 @@ void UpdateTrayMenuLabel(TrayMenu *trayMenu) { void UpdateTrayMenuIcon(TrayMenu *trayMenu) { - // Exit early if NULL or empty string - if( trayMenu->icon == NULL || STREMPTY(trayMenu->icon ) ) { + // Exit early if NULL + if( trayMenu->icon == NULL ) { return; } + id trayImage = hashmap_get(&trayIconCache, trayMenu->icon, strlen(trayMenu->icon)); id statusBarButton = msg(trayMenu->statusbaritem, s("button")); msg(statusBarButton, s("setImagePosition:"), trayMenu->trayIconPosition); diff --git a/v2/test/kitchensink/tray.go b/v2/test/kitchensink/tray.go index 2a736139..33dd5ba0 100644 --- a/v2/test/kitchensink/tray.go +++ b/v2/test/kitchensink/tray.go @@ -69,6 +69,23 @@ func (t *Tray) decrementcounter() int { return t.dynamicMenuCounter } +func (t *Tray) SvelteIcon(_ *menu.CallbackData) { + t.secondTrayMenu.Icon = "svelte" + t.runtime.Menu.UpdateTrayMenu(t.secondTrayMenu) +} +func (t *Tray) NoIcon(_ *menu.CallbackData) { + t.secondTrayMenu.Icon = "" + t.runtime.Menu.UpdateTrayMenu(t.secondTrayMenu) +} +func (t *Tray) LightIcon(_ *menu.CallbackData) { + t.secondTrayMenu.Icon = "light" + t.runtime.Menu.UpdateTrayMenu(t.secondTrayMenu) +} +func (t *Tray) DarkIcon(_ *menu.CallbackData) { + t.secondTrayMenu.Icon = "dark" + t.runtime.Menu.UpdateTrayMenu(t.secondTrayMenu) +} + //func (t *Tray) removeMenu(_ *menu.MenuItem) { // // // Lock because this method will be called in a goroutine @@ -119,6 +136,7 @@ func (t *Tray) createTrayMenus() []*menu.TrayMenu { secondTrayMenu := &menu.TrayMenu{} secondTrayMenu.Label = "Another tray label" + secondTrayMenu.Icon = "svelte" secondTrayMenu.Menu = menu.NewMenuFromItems( menu.Text("Update Label", "Update Label", nil, func(_ *menu.CallbackData) { // Lock because this method will be called in a goroutine @@ -130,6 +148,12 @@ func (t *Tray) createTrayMenus() []*menu.TrayMenu { secondTrayMenu.Label = trayLabel t.runtime.Menu.UpdateTrayMenu(t.secondTrayMenu) }), + menu.SubMenu("Select Icon", menu.NewMenuFromItems( + menu.Text("Svelte", "Svelte", nil, t.SvelteIcon), + menu.Text("Light", "Light", nil, t.LightIcon), + menu.Text("Dark", "Dark", nil, t.DarkIcon), + menu.Text("None", "None", nil, t.NoIcon), + )), ) t.secondTrayMenu = secondTrayMenu return []*menu.TrayMenu{