From 52599be7ec432dbbe03cb2cc94b4831e2395873c Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Mon, 11 Sep 2017 16:14:45 -0500 Subject: Added show/hide for linux --- systray_linux.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'systray_linux.c') diff --git a/systray_linux.c b/systray_linux.c index 5f57d74..fd0f1c2 100644 --- a/systray_linux.c +++ b/systray_linux.c @@ -109,6 +109,32 @@ gboolean do_add_or_update_menu_item(gpointer data) { return FALSE; } +// runs in main thread, should always return FALSE to prevent gtk to execute it again +gboolean do_hide_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(item->menu_id == mii->menu_id){ + gtk_widget_hide(GTK_MENU_ITEM(item->menu_item)); + return; + } + } +} + +// runs in main thread, should always return FALSE to prevent gtk to execute it again +gboolean do_show_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(item->menu_id == mii->menu_id){ + gtk_widget_show(GTK_MENU_ITEM(item->menu_item)); + return; + } + } +} + // runs in main thread, should always return FALSE to prevent gtk to execute it again gboolean do_quit(gpointer data) { int i; @@ -151,6 +177,18 @@ void add_or_update_menu_item(int menu_id, char* title, char* tooltip, short disa g_idle_add(do_add_or_update_menu_item, mii); } +void hide_menu_item(int menu_id) { + MenuItemInfo *mii = malloc(sizeof(MenuItemInfo)); + mii->menu_id = menu_id; + g_idle_add(do_hide_menu_item, mii); +} + +void show_menu_item(int menu_id) { + MenuItemInfo *mii = malloc(sizeof(MenuItemInfo)); + mii->menu_id = menu_id; + g_idle_add(do_show_menu_item, mii); +} + void quit() { g_idle_add(do_quit, NULL); } -- cgit v1.2.3 From 0cddebf2c112de4b2e583e2b1e3a1fd672bfacb7 Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Mon, 11 Sep 2017 21:57:26 -0500 Subject: Fixed linux show/hide --- systray_linux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'systray_linux.c') diff --git a/systray_linux.c b/systray_linux.c index fd0f1c2..7258613 100644 --- a/systray_linux.c +++ b/systray_linux.c @@ -116,7 +116,7 @@ gboolean do_hide_menu_item(gpointer data) { for(it = global_menu_items; it != NULL; it = it->next) { MenuItemNode* item = (MenuItemNode*)(it->data); if(item->menu_id == mii->menu_id){ - gtk_widget_hide(GTK_MENU_ITEM(item->menu_item)); + gtk_widget_hide(GTK_WIDGET(item->menu_item)); return; } } @@ -129,7 +129,7 @@ gboolean do_show_menu_item(gpointer data) { for(it = global_menu_items; it != NULL; it = it->next) { MenuItemNode* item = (MenuItemNode*)(it->data); if(item->menu_id == mii->menu_id){ - gtk_widget_show(GTK_MENU_ITEM(item->menu_item)); + gtk_widget_show(GTK_WIDGET(item->menu_item)); return; } } -- cgit v1.2.3 From 30f8293685963e71f35e1beaf2672bf4729905be Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Tue, 12 Sep 2017 05:43:24 -0500 Subject: Code review fixes --- systray_linux.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'systray_linux.c') diff --git a/systray_linux.c b/systray_linux.c index 7258613..64d7e8f 100644 --- a/systray_linux.c +++ b/systray_linux.c @@ -117,9 +117,10 @@ gboolean do_hide_menu_item(gpointer data) { MenuItemNode* item = (MenuItemNode*)(it->data); if(item->menu_id == mii->menu_id){ gtk_widget_hide(GTK_WIDGET(item->menu_item)); - return; + break; } } + return FALSE; } // runs in main thread, should always return FALSE to prevent gtk to execute it again @@ -130,9 +131,10 @@ gboolean do_show_menu_item(gpointer data) { MenuItemNode* item = (MenuItemNode*)(it->data); if(item->menu_id == mii->menu_id){ gtk_widget_show(GTK_WIDGET(item->menu_item)); - return; + break; } } + return FALSE; } // runs in main thread, should always return FALSE to prevent gtk to execute it again -- cgit v1.2.3