[gtk+/gtk-2-24] gtk: fix warning when finalizing a GtkToolbar
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] gtk: fix warning when finalizing a GtkToolbar
- Date: Sun, 18 Sep 2011 23:08:05 +0000 (UTC)
commit a516d2359c9eac84bfa4682a70a62315adedb1d6
Author: Michael Natterer <mitch gimp org>
Date: Mon Sep 19 01:05:26 2011 +0200
gtk: fix warning when finalizing a GtkToolbar
Move destruction of child widgets from finalize() to dispose()
because unparenting emits a signal with old_parent as object
parameter, which tries to ref the toolbar that is being
finalized.
gtk/gtktoolbar.c | 30 ++++++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c
index 1388a65..edeab88 100644
--- a/gtk/gtktoolbar.c
+++ b/gtk/gtktoolbar.c
@@ -192,6 +192,7 @@ static void gtk_toolbar_get_child_property (GtkContainer *contain
guint property_id,
GValue *value,
GParamSpec *pspec);
+static void gtk_toolbar_dispose (GObject *object);
static void gtk_toolbar_finalize (GObject *object);
static void gtk_toolbar_show_all (GtkWidget *widget);
static void gtk_toolbar_hide_all (GtkWidget *widget);
@@ -367,8 +368,9 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
gobject_class->set_property = gtk_toolbar_set_property;
gobject_class->get_property = gtk_toolbar_get_property;
+ gobject_class->dispose = gtk_toolbar_dispose;
gobject_class->finalize = gtk_toolbar_finalize;
-
+
widget_class->button_press_event = gtk_toolbar_button_press;
widget_class->expose_event = gtk_toolbar_expose;
widget_class->size_request = gtk_toolbar_size_request;
@@ -3159,6 +3161,24 @@ gtk_toolbar_get_drop_index (GtkToolbar *toolbar,
}
static void
+gtk_toolbar_dispose (GObject *object)
+{
+ GtkToolbar *toolbar = GTK_TOOLBAR (object);
+ GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
+
+ if (priv->arrow_button)
+ {
+ gtk_widget_unparent (priv->arrow_button);
+ priv->arrow_button = NULL;
+ }
+
+ if (priv->menu)
+ gtk_widget_destroy (GTK_WIDGET (priv->menu));
+
+ G_OBJECT_CLASS (gtk_toolbar_parent_class)->dispose (object);
+}
+
+static void
gtk_toolbar_finalize (GObject *object)
{
GList *list;
@@ -3167,9 +3187,6 @@ gtk_toolbar_finalize (GObject *object)
if (toolbar->tooltips)
g_object_unref (toolbar->tooltips);
-
- if (priv->arrow_button)
- gtk_widget_unparent (priv->arrow_button);
for (list = priv->content; list != NULL; list = list->next)
{
@@ -3182,10 +3199,7 @@ gtk_toolbar_finalize (GObject *object)
g_list_free (toolbar->children);
g_timer_destroy (priv->timer);
-
- if (priv->menu)
- gtk_widget_destroy (GTK_WIDGET (priv->menu));
-
+
if (priv->idle_id)
g_source_remove (priv->idle_id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]