[evolution-patches] support for icon theme change in e-icon-factory



This responds to the "changed" signal in the GnomeIconTheme object and
cleans the pixbuf cache when so.
-- 
Rodrigo Moya <rodrigo novell com>
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/e-util/ChangeLog,v
retrieving revision 1.474
diff -u -p -r1.474 ChangeLog
--- ChangeLog	5 Aug 2004 15:52:14 -0000	1.474
+++ ChangeLog	5 Aug 2004 16:45:00 -0000
@@ -1,5 +1,13 @@
 2004-08-05  Rodrigo Moya <rodrigo novell com>
 
+	* e-icon-factory.c (e_icon_factory_init): connect to "changed"
+	signal on the GnomeIconTheme object.
+	(icon_theme_changed_cb): g_hash_table_foreach_remove all items in the
+	hash table.
+	(icon_foreach_remove): callback for removing hash table items.
+
+2004-08-05  Rodrigo Moya <rodrigo novell com>
+
 	Fixes #62030
 
 	* e-icon-factory.c (load_icon): get the icon_key as a new argument
Index: e-icon-factory.c
===================================================================
RCS file: /cvs/gnome/evolution/e-util/e-icon-factory.c,v
retrieving revision 1.10
diff -u -p -r1.10 e-icon-factory.c
--- e-icon-factory.c	5 Aug 2004 15:52:14 -0000	1.10
+++ e-icon-factory.c	5 Aug 2004 16:45:00 -0000
@@ -173,6 +173,17 @@ pixel_size_to_icon_size (int pixel_size)
 	return icon_size;
 }
 
+static gboolean
+icon_foreach_remove (gpointer key, gpointer value, gpointer user_data)
+{
+	icon_free (value);
+}
+
+static void
+icon_theme_changed_cb (GnomeIconTheme *object, gpointer user_data)
+{
+	g_hash_table_foreach_remove (name_to_icon, (GHRFunc) icon_foreach_remove, NULL);
+}
 
 /**
  * e_icon_factory_init:
@@ -187,18 +198,17 @@ e_icon_factory_init (void)
 	
 	icon_theme = gnome_icon_theme_new ();
 	name_to_icon = g_hash_table_new (g_str_hash, g_str_equal);
+	g_signal_connect (G_OBJECT (icon_theme), "changed", icon_theme_changed_cb, NULL);
 	
 	broken16_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) broken_image_16_xpm);
 	broken24_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) broken_image_24_xpm);
 }
 
-
 static void
 icon_foreach_free (gpointer key, gpointer value, gpointer user_data)
 {
 	icon_free (value);
 }
-
 
 /**
  * e_icon_factory_shutdown:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]