diff options
| author | fffw | 2015-02-13 15:20:13 +0800 |
|---|---|---|
| committer | fffw | 2015-02-13 15:20:13 +0800 |
| commit | c00cfb38ee3aee8da409898fed17e80716095e89 (patch) | |
| tree | e6997d1ab53bfb8e1dfeafec7e239f8cfbc35838 /systray_linux.c | |
| parent | 85d3e528d5a1d1ef8b60dcafc901c633343b4a37 (diff) | |
| parent | 6a81309bde4a67b2d5d1cb57b2e89945ba63fde6 (diff) | |
| download | systray-issue-2143-lib.tar.bz2 | |
merge xcompileissue-2143-lib
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; |
