diff options
author | John Sullivan <sullivan@src.gnome.org> | 2000-12-22 19:53:17 +0000 |
---|---|---|
committer | John Sullivan <sullivan@src.gnome.org> | 2000-12-22 19:53:17 +0000 |
commit | 632ba58da933a54f5d43e33cba6be4546948cc1d (patch) | |
tree | 998e9ec5564d96cde6bfbf64ad3a7b5464eea245 | |
parent | 73c3271ae8f30c7757e10ca0f2f0a2b776641e8d (diff) | |
download | nautilus-632ba58da933a54f5d43e33cba6be4546948cc1d.tar.gz |
reviewed by: Pavel Cisler <pavel@eazel.com>
Nautilus part of fix for bug 4798 (icon changes in MIME
type capplet aren't reflected automatically in Nautilus)
* libnautilus-extensions/nautilus-icon-factory.c:
(get_icon_factory): connect to gnome_vfs_mime_monitor's
"data_changed" signal.
(mime_type_data_changed_callback): emit "icons_changed"
signal when gnome_vfs_mime_monitor says data has changed.
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-icon-factory.c | 21 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-factory.c | 21 |
3 files changed, 55 insertions, 0 deletions
@@ -1,3 +1,16 @@ +2000-12-22 John Sullivan <sullivan@eazel.com> + + reviewed by: Pavel Cisler <pavel@eazel.com> + + Nautilus part of fix for bug 4798 (icon changes in MIME + type capplet aren't reflected automatically in Nautilus) + + * libnautilus-extensions/nautilus-icon-factory.c: + (get_icon_factory): connect to gnome_vfs_mime_monitor's + "data_changed" signal. + (mime_type_data_changed_callback): emit "icons_changed" + signal when gnome_vfs_mime_monitor says data has changed. + 2000-12-21 Maciej Stachowiak <mjs@eazel.com> reviewed by: Pavel Cisler <pavel@eazel.com> diff --git a/libnautilus-extensions/nautilus-icon-factory.c b/libnautilus-extensions/nautilus-icon-factory.c index e94a69024..c889025e5 100644 --- a/libnautilus-extensions/nautilus-icon-factory.c +++ b/libnautilus-extensions/nautilus-icon-factory.c @@ -54,6 +54,7 @@ #include <libgnomevfs/gnome-vfs-file-info.h> #include <libgnomevfs/gnome-vfs-mime-info.h> #include <libgnomevfs/gnome-vfs-mime-handlers.h> +#include <libgnomevfs/gnome-vfs-mime-monitor.h> #include <libgnomevfs/gnome-vfs-types.h> #include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h> #include <librsvg/rsvg.h> @@ -268,6 +269,8 @@ static void nautilus_icon_factory_initialize_class (NautilusIconFactoryCla static void nautilus_icon_factory_initialize (NautilusIconFactory *factory); static void nautilus_icon_factory_destroy (GtkObject *object); static void icon_theme_changed_callback (gpointer user_data); +static void mime_type_data_changed_callback (GnomeVFSMIMEMonitor *monitor, + gpointer user_data); static guint nautilus_scalable_icon_hash (gconstpointer p); static gboolean nautilus_scalable_icon_equal (gconstpointer a, gconstpointer b); @@ -312,6 +315,11 @@ get_icon_factory (void) icon_theme_changed_callback, NULL); + gtk_signal_connect (GTK_OBJECT (gnome_vfs_mime_monitor_get ()), + "data_changed", + mime_type_data_changed_callback, + NULL); + g_atexit (destroy_icon_factory); } return global_icon_factory; @@ -1117,6 +1125,19 @@ icon_theme_changed_callback (gpointer user_data) g_free (icon_theme); } +static void +mime_type_data_changed_callback (GnomeVFSMIMEMonitor *monitor, gpointer user_data) +{ + g_assert (monitor != NULL); + g_assert (user_data == NULL); + + /* We don't know which data changed, so we have to assume that + * any or all icons might have changed. + */ + gtk_signal_emit (GTK_OBJECT (get_icon_factory ()), + signals[ICONS_CHANGED]); +} + /* Decompose a scalable icon into its text pieces. */ void nautilus_scalable_icon_get_text_pieces (NautilusScalableIcon *icon, diff --git a/libnautilus-private/nautilus-icon-factory.c b/libnautilus-private/nautilus-icon-factory.c index e94a69024..c889025e5 100644 --- a/libnautilus-private/nautilus-icon-factory.c +++ b/libnautilus-private/nautilus-icon-factory.c @@ -54,6 +54,7 @@ #include <libgnomevfs/gnome-vfs-file-info.h> #include <libgnomevfs/gnome-vfs-mime-info.h> #include <libgnomevfs/gnome-vfs-mime-handlers.h> +#include <libgnomevfs/gnome-vfs-mime-monitor.h> #include <libgnomevfs/gnome-vfs-types.h> #include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h> #include <librsvg/rsvg.h> @@ -268,6 +269,8 @@ static void nautilus_icon_factory_initialize_class (NautilusIconFactoryCla static void nautilus_icon_factory_initialize (NautilusIconFactory *factory); static void nautilus_icon_factory_destroy (GtkObject *object); static void icon_theme_changed_callback (gpointer user_data); +static void mime_type_data_changed_callback (GnomeVFSMIMEMonitor *monitor, + gpointer user_data); static guint nautilus_scalable_icon_hash (gconstpointer p); static gboolean nautilus_scalable_icon_equal (gconstpointer a, gconstpointer b); @@ -312,6 +315,11 @@ get_icon_factory (void) icon_theme_changed_callback, NULL); + gtk_signal_connect (GTK_OBJECT (gnome_vfs_mime_monitor_get ()), + "data_changed", + mime_type_data_changed_callback, + NULL); + g_atexit (destroy_icon_factory); } return global_icon_factory; @@ -1117,6 +1125,19 @@ icon_theme_changed_callback (gpointer user_data) g_free (icon_theme); } +static void +mime_type_data_changed_callback (GnomeVFSMIMEMonitor *monitor, gpointer user_data) +{ + g_assert (monitor != NULL); + g_assert (user_data == NULL); + + /* We don't know which data changed, so we have to assume that + * any or all icons might have changed. + */ + gtk_signal_emit (GTK_OBJECT (get_icon_factory ()), + signals[ICONS_CHANGED]); +} + /* Decompose a scalable icon into its text pieces. */ void nautilus_scalable_icon_get_text_pieces (NautilusScalableIcon *icon, |