summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Sullivan <sullivan@src.gnome.org>2000-12-22 19:53:17 +0000
committerJohn Sullivan <sullivan@src.gnome.org>2000-12-22 19:53:17 +0000
commit632ba58da933a54f5d43e33cba6be4546948cc1d (patch)
tree998e9ec5564d96cde6bfbf64ad3a7b5464eea245
parent73c3271ae8f30c7757e10ca0f2f0a2b776641e8d (diff)
downloadnautilus-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--ChangeLog13
-rw-r--r--libnautilus-extensions/nautilus-icon-factory.c21
-rw-r--r--libnautilus-private/nautilus-icon-factory.c21
3 files changed, 55 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 19a4667dc..545b24531 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,