From 7cd6d3d26108833c6dc3d896241e00fd3f321d79 Mon Sep 17 00:00:00 2001 From: Olivier Duchateau Date: Wed, 21 Aug 2019 19:01:38 +0200 Subject: [PATCH] Monitor GtkIconTheme change --- plugins/applicationsmenu/applicationsmenu.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/plugins/applicationsmenu/applicationsmenu.c b/plugins/applicationsmenu/applicationsmenu.c index ce51d037..d7c797b0 100644 --- a/plugins/applicationsmenu/applicationsmenu.c +++ b/plugins/applicationsmenu/applicationsmenu.c @@ -72,6 +72,7 @@ struct _ApplicationsMenuPlugin gulong style_set_id; gulong screen_changed_id; + gulong theme_changed_id; }; enum @@ -209,9 +210,13 @@ applications_menu_plugin_class_init (ApplicationsMenuPluginClass *klass) static void applications_menu_plugin_init (ApplicationsMenuPlugin *plugin) { + GtkIconTheme *icon_theme; + /* init garcon environment */ garcon_set_environment_xdg (GARCON_ENVIRONMENT_XFCE); + icon_theme = gtk_icon_theme_get_default (); + plugin->button = xfce_panel_create_toggle_button (); xfce_panel_plugin_add_action_widget (XFCE_PANEL_PLUGIN (plugin), plugin->button); gtk_container_add (GTK_CONTAINER (plugin), plugin->button); @@ -244,6 +249,10 @@ applications_menu_plugin_init (ApplicationsMenuPlugin *plugin) G_CALLBACK (applications_menu_button_theme_changed), plugin); plugin->screen_changed_id = g_signal_connect_swapped (G_OBJECT (plugin->button), "screen-changed", G_CALLBACK (applications_menu_button_theme_changed), plugin); + plugin->theme_changed_id = g_signal_connect_swapped (G_OBJECT (icon_theme), + "changed", + G_CALLBACK (applications_menu_plugin_set_garcon_menu), + plugin); } @@ -443,6 +452,7 @@ static void applications_menu_plugin_free_data (XfcePanelPlugin *panel_plugin) { ApplicationsMenuPlugin *plugin = XFCE_APPLICATIONS_MENU_PLUGIN (panel_plugin); + GtkIconTheme *icon_theme; if (plugin->menu != NULL) gtk_widget_destroy (plugin->menu); @@ -459,6 +469,14 @@ applications_menu_plugin_free_data (XfcePanelPlugin *panel_plugin) plugin->screen_changed_id = 0; } + if (plugin->theme_changed_id != 0) + { + icon_theme = gtk_icon_theme_get_default (); + g_signal_handler_disconnect (G_OBJECT (icon_theme), + plugin->theme_changed_id); + plugin->theme_changed_id = 0; + } + g_free (plugin->button_title); g_free (plugin->button_icon); g_free (plugin->custom_menu_file); -- 2.22.1