diff options
Diffstat (limited to 'systray_linux.c')
| -rw-r--r-- | systray_linux.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/systray_linux.c b/systray_linux.c index 1cbebbe..83b4690 100644 --- a/systray_linux.c +++ b/systray_linux.c @@ -13,11 +13,11 @@ static GArray *global_temp_icon_file_names = NULL; typedef struct { GtkWidget *menu_item; - char *menu_id; + int menu_id; } MenuItemNode; typedef struct { - char* menu_id; + int menu_id; char* title; char* tooltip; short disabled; @@ -62,15 +62,18 @@ gboolean do_set_icon(gpointer data) { return FALSE; } +void _systray_menu_item_selected(int *id) { + systray_menu_item_selected(*id); +} + // runs in main thread, should always return FALSE to prevent gtk to execute it again gboolean do_add_or_update_menu_item(gpointer data) { MenuItemInfo *mii = (MenuItemInfo*)data; GList* it; for(it = global_menu_items; it != NULL; it = it->next) { MenuItemNode* item = (MenuItemNode*)(it->data); - if(strcmp(item->menu_id, mii->menu_id) == 0){ + if(item->menu_id == mii->menu_id){ gtk_menu_item_set_label(GTK_MENU_ITEM(item->menu_item), mii->title); - free(mii->menu_id); break; } } @@ -78,7 +81,9 @@ gboolean do_add_or_update_menu_item(gpointer data) { // menu id doesn't exist, add new item if(it == NULL) { GtkWidget *menu_item = gtk_menu_item_new_with_label(mii->title); - g_signal_connect_swapped(G_OBJECT(menu_item), "activate", G_CALLBACK(systray_menu_item_selected), mii->menu_id); + int *id = malloc(sizeof(int)); + *id = mii->menu_id; + g_signal_connect_swapped(G_OBJECT(menu_item), "activate", G_CALLBACK(_systray_menu_item_selected), id); gtk_menu_shell_append(GTK_MENU_SHELL(global_tray_menu), menu_item); MenuItemNode* new_item = malloc(sizeof(MenuItemNode)); @@ -134,7 +139,7 @@ void setTooltip(char* ctooltip) { free(ctooltip); } -void add_or_update_menu_item(char* menu_id, char* title, char* tooltip, short disabled, short checked) { +void add_or_update_menu_item(int menu_id, char* title, char* tooltip, short disabled, short checked) { MenuItemInfo *mii = malloc(sizeof(MenuItemInfo)); mii->menu_id = menu_id; mii->title = title; |
