summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2006-12-31 16:54:56 +0000
committerEmmanuele Bassi <ebassi@src.gnome.org>2006-12-31 16:54:56 +0000
commit2e372626d7dcfa8267de0980c4ddecc9e571d106 (patch)
treee9b3438b5c886c7dd064d12652ba075a6699fcd6
parentccd897d2fceebf6dacf4e23894c0cb088315f1ff (diff)
downloadgtk+-2e372626d7dcfa8267de0980c4ddecc9e571d106.tar.gz
Use the right object when disconnecting from the GtkRecentManager::changed
2006-12-31 Emmanuele Bassi <ebassi@gnome.org> * gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the right object when disconnecting from the GtkRecentManager::changed signal; save us a few indirections using a variable. svn path=/trunk/; revision=16999
-rw-r--r--ChangeLog6
-rw-r--r--gtk/gtkrecentchoosermenu.c26
2 files changed, 22 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 04ce75206a..8a4de7cb44 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2006-12-31 Emmanuele Bassi <ebassi@gnome.org>
+ * gtk/gtkrecentchoosermenu.c (set_recent_manager): Use the
+ right object when disconnecting from the GtkRecentManager::changed
+ signal; save us a few indirections using a variable.
+
+2006-12-31 Emmanuele Bassi <ebassi@gnome.org>
+
* gtk/gtkrecentchoosermenu.c: Move the signal and idle
disconnections into the dispose function, as well as the
object unrefs; reset every handler id and the
diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c
index 12b9ca274e..893348e8f8 100644
--- a/gtk/gtkrecentchoosermenu.c
+++ b/gtk/gtkrecentchoosermenu.c
@@ -264,7 +264,9 @@ gtk_recent_chooser_menu_dispose (GObject *object)
if (priv->manager_changed_id)
{
- g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+ if (priv->manager)
+ g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+
priv->manager_changed_id = 0;
}
@@ -1157,21 +1159,25 @@ static void
set_recent_manager (GtkRecentChooserMenu *menu,
GtkRecentManager *manager)
{
- if (menu->priv->manager)
+ GtkRecentChooserMenuPrivate *priv = menu->priv;
+
+ if (priv->manager)
{
- g_signal_handler_disconnect (menu, menu->priv->manager_changed_id);
- menu->priv->manager = NULL;
+ if (priv->manager_changed_id)
+ g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
+
+ priv->manager = NULL;
}
if (manager)
- menu->priv->manager = manager;
+ priv->manager = manager;
else
- menu->priv->manager = gtk_recent_manager_get_default ();
+ priv->manager = gtk_recent_manager_get_default ();
- if (menu->priv->manager)
- menu->priv->manager_changed_id = g_signal_connect (menu->priv->manager, "changed",
- G_CALLBACK (manager_changed_cb),
- menu);
+ if (priv->manager)
+ priv->manager_changed_id = g_signal_connect (priv->manager, "changed",
+ G_CALLBACK (manager_changed_cb),
+ menu);
/* (re)populate the menu */
gtk_recent_chooser_menu_populate (menu);
}