Move the signal and idle disconnections into the dispose function, as well

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
	pointers. (suggested by Paolo Borelli, #390873)

svn path=/trunk/; revision=16997
This commit is contained in:
Emmanuele Bassi
2006-12-31 16:35:00 +00:00
committed by Emmanuele Bassi
parent 1bb498e3de
commit ccd897d2fc
2 changed files with 45 additions and 15 deletions

View File

@@ -1,3 +1,10 @@
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
pointers. (suggested by Paolo Borelli, #390873)
2006-12-31 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkprintoperation-win32.c: Include windows.h (#391229,

View File

@@ -94,6 +94,7 @@ enum {
#define GTK_RECENT_CHOOSER_MENU_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_RECENT_CHOOSER_MENU, GtkRecentChooserMenuPrivate))
static void gtk_recent_chooser_menu_finalize (GObject *object);
static void gtk_recent_chooser_menu_dispose (GObject *object);
static GObject *gtk_recent_chooser_menu_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params);
@@ -181,6 +182,7 @@ gtk_recent_chooser_menu_class_init (GtkRecentChooserMenuClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->constructor = gtk_recent_chooser_menu_constructor;
gobject_class->dispose = gtk_recent_chooser_menu_dispose;
gobject_class->finalize = gtk_recent_chooser_menu_finalize;
gobject_class->set_property = gtk_recent_chooser_menu_set_property;
gobject_class->get_property = gtk_recent_chooser_menu_get_property;
@@ -240,32 +242,53 @@ gtk_recent_chooser_menu_finalize (GObject *object)
GtkRecentChooserMenu *menu = GTK_RECENT_CHOOSER_MENU (object);
GtkRecentChooserMenuPrivate *priv = menu->priv;
g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
priv->manager_changed_id = 0;
if (priv->populate_id)
g_source_remove (priv->populate_id);
priv->manager = NULL;
if (priv->sort_data_destroy)
{
priv->sort_data_destroy (priv->sort_data);
priv->sort_data_destroy = NULL;
priv->sort_data = NULL;
priv->sort_func = NULL;
}
if (priv->tooltips)
g_object_unref (priv->tooltips);
if (priv->current_filter)
g_object_unref (priv->current_filter);
priv->sort_data = NULL;
priv->sort_func = NULL;
G_OBJECT_CLASS (gtk_recent_chooser_menu_parent_class)->finalize (object);
}
static void
gtk_recent_chooser_menu_dispose (GObject *object)
{
GtkRecentChooserMenu *menu = GTK_RECENT_CHOOSER_MENU (object);
GtkRecentChooserMenuPrivate *priv = menu->priv;
if (priv->manager_changed_id)
{
g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
priv->manager_changed_id = 0;
}
if (priv->populate_id)
{
g_source_remove (priv->populate_id);
priv->populate_id = 0;
}
if (priv->tooltips)
{
g_object_unref (priv->tooltips);
priv->tooltips = NULL;
}
if (priv->current_filter)
{
g_object_unref (priv->current_filter);
priv->current_filter = NULL;
}
G_OBJECT_CLASS (gtk_recent_chooser_menu_parent_class)->dispose (object);
}
static GObject *
gtk_recent_chooser_menu_constructor (GType type,
guint n_construct_properties,