aboutsummaryrefslogtreecommitdiffstats
path: root/systray_linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'systray_linux.c')
-rw-r--r--systray_linux.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/systray_linux.c b/systray_linux.c
index 834cf9b..1a07815 100644
--- a/systray_linux.c
+++ b/systray_linux.c
@@ -77,7 +77,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));
@@ -119,6 +121,10 @@ gboolean do_quit(gpointer data) {
return FALSE;
}
+void _systray_menu_item_selected(int *id) {
+ systray_menu_item_selected(*id);
+}
+
void setIcon(const char* iconBytes, int length) {
GBytes* bytes = g_bytes_new_static(iconBytes, length);
g_idle_add(do_set_icon, bytes);