Author: jannis
Date: 2008-10-14 13:51:59 +0000 (Tue, 14 Oct 2008)
New Revision: 28252

Modified:
   xfce4-panel/trunk/ChangeLog
   xfce4-panel/trunk/plugins/launcher/launcher.c
Log:
        * launcher/launcher.c: Change the way the icon theme change callback
          is installed: use gtk_icon_theme_for_screen() in combination with
          g_signal_connect() instead of adding a signal emission hook to the
          icon theme class. This should fix bug #4474.

Modified: xfce4-panel/trunk/ChangeLog
===================================================================
--- xfce4-panel/trunk/ChangeLog 2008-10-14 13:31:45 UTC (rev 28251)
+++ xfce4-panel/trunk/ChangeLog 2008-10-14 13:51:59 UTC (rev 28252)
@@ -1,3 +1,10 @@
+2008-10-14 15:49 jannis
+
+       * launcher/launcher.c: Change the way the icon theme change callback
+         is installed: use gtk_icon_theme_for_screen() in combination with
+         g_signal_connect() instead of adding a signal emission hook to the
+         icon theme class. This should fix bug #4474.
+
 2008-10-13 11:42 stephan
 
        * mcs-plugins/*, settings/*, 

Modified: xfce4-panel/trunk/plugins/launcher/launcher.c
===================================================================
--- xfce4-panel/trunk/plugins/launcher/launcher.c       2008-10-14 13:31:45 UTC 
(rev 28251)
+++ xfce4-panel/trunk/plugins/launcher/launcher.c       2008-10-14 13:51:59 UTC 
(rev 28252)
@@ -38,9 +38,7 @@
 #include "launcher-dialog.h"
 
 /* prototypes */
-static gboolean        launcher_utility_icon_theme_changed          
(GSignalInvocationHint *ihint,
-                                                                     guint     
             n_param_values,
-                                                                     const 
GValue          *param_values,
+static void            launcher_utility_icon_theme_changed          
(GtkIconTheme          *icon_theme,
                                                                      
LauncherPlugin        *launcher);
 static gboolean        launcher_icon_button_expose_event            (GtkWidget 
            *widget,
                                                                      
GdkEventExpose        *event,
@@ -105,20 +103,15 @@
 /**
  * Utility Functions
  **/
-static gboolean
-launcher_utility_icon_theme_changed (GSignalInvocationHint *ihint,
-                                     guint                  n_param_values,
-                                     const GValue          *param_values,
-                                     LauncherPlugin        *launcher)
+static void
+launcher_utility_icon_theme_changed (GtkIconTheme   *icon_theme,
+                                     LauncherPlugin *launcher)
 {
     /* update the button icon */
     launcher_icon_button_set_icon (launcher);
 
     /* destroy the menu */
     launcher_menu_destroy (launcher);
-
-    /* keep hook alive */
-    return TRUE;
 }
 
 
@@ -815,7 +808,8 @@
 launcher_plugin_new (XfcePanelPlugin *plugin)
 {
     LauncherPlugin *launcher;
-    gpointer        klass;
+    GtkIconTheme   *icon_theme;
+    GdkScreen      *screen;
 
     /* create launcher structure */
     launcher = panel_slice_new0 (LauncherPlugin);
@@ -851,12 +845,10 @@
     gtk_button_set_focus_on_click (GTK_BUTTON (launcher->arrow_button), FALSE);
 
     /* hook for icon themes changes */
-    klass = g_type_class_ref (GTK_TYPE_ICON_THEME);
-    launcher->theme_timeout_id =
-        g_signal_add_emission_hook (g_signal_lookup ("changed", 
GTK_TYPE_ICON_THEME),
-                                    0, (GSignalEmissionHook) 
launcher_utility_icon_theme_changed,
-                                    launcher, NULL);
-    g_type_class_unref (klass);
+    screen = gtk_widget_get_screen (launcher->image);
+    icon_theme = gtk_icon_theme_get_for_screen (screen);
+    g_signal_connect (G_OBJECT (icon_theme), "changed", 
+                      G_CALLBACK (launcher_utility_icon_theme_changed), 
launcher);
 
     /* icon button signals */
     g_signal_connect (G_OBJECT (launcher->icon_button), "state-changed",

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to