diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2006-12-31 16:54:56 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@src.gnome.org> | 2006-12-31 16:54:56 +0000 |
commit | 2e372626d7dcfa8267de0980c4ddecc9e571d106 (patch) | |
tree | e9b3438b5c886c7dd064d12652ba075a6699fcd6 | |
parent | ccd897d2fceebf6dacf4e23894c0cb088315f1ff (diff) | |
download | gtk+-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-- | ChangeLog | 6 | ||||
-rw-r--r-- | gtk/gtkrecentchoosermenu.c | 26 |
2 files changed, 22 insertions, 10 deletions
@@ -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); } |