[glade3] * gladeui/glade-base-editor.c: Fixed to unref in ->dispose() and to unset the loaded widget in t



commit a70df1516455980ce403e89fe4e12e11041f9c1e
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Wed Mar 31 22:00:10 2010 -0400

    	* gladeui/glade-base-editor.c: Fixed to unref in ->dispose() and to unset the loaded widget
    	  in the signal editor when doing so.

 ChangeLog                   |    3 +++
 gladeui/glade-base-editor.c |   26 +++++++++++++++++++-------
 2 files changed, 22 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 4b8e323..2c6de6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,9 @@
 	* gladeui/glade-project.c: Added the targets-changed signal to refresh views with data about 
 	  target project versions (notebook tabs).
 
+	* gladeui/glade-base-editor.c: Fixed to unref in ->dispose() and to unset the loaded widget
+	  in the signal editor when doing so.
+
 2010-03-30  Tristan Van Berkom <tvb gnome org>
 
 	* plugins/gtk+/glade-gtk.c, plugins/gtk+/gtk+.xml.in: Block the glade_gtk_text_buffer_changed()
diff --git a/gladeui/glade-base-editor.c b/gladeui/glade-base-editor.c
index 37924fe..583a926 100644
--- a/gladeui/glade-base-editor.c
+++ b/gladeui/glade-base-editor.c
@@ -1177,8 +1177,7 @@ glade_base_editor_set_container (GladeBaseEditor *editor,
 {
 	GladeBaseEditorPrivate *e = editor->priv;
 
-	if (e->project)
-		glade_base_editor_project_disconnect (editor);
+	glade_base_editor_project_disconnect (editor);
 	
 	if (container == NULL)
 	{
@@ -1237,15 +1236,27 @@ glade_base_editor_finalize (GObject *object)
 {
 	GladeBaseEditor *cobj = GLADE_BASE_EDITOR (object);
 
+	g_free (cobj->priv);
+
+	G_OBJECT_CLASS(parent_class)->finalize (object);
+}
+
+static void
+glade_base_editor_dispose (GObject *object)
+{
+	GladeBaseEditor *cobj = GLADE_BASE_EDITOR (object);
+
+	glade_signal_editor_load_widget (cobj->priv->signal_editor, NULL);
+
 	reset_child_types (cobj);
 
-	/* Free private members, etc. */
 	glade_base_editor_project_disconnect (cobj);
 
-	g_object_unref (cobj->priv->group);
-	
-	g_free (cobj->priv);
-	G_OBJECT_CLASS(parent_class)->finalize(object);
+	if (cobj->priv->group)
+		cobj->priv->group =
+			(g_object_unref (cobj->priv->group), NULL);
+
+	G_OBJECT_CLASS(parent_class)->dispose (object);
 }
 
 static void
@@ -1430,6 +1441,7 @@ glade_base_editor_class_init (GladeBaseEditorClass *klass)
 	parent_class = g_type_class_peek_parent(klass);
 
 	object_class->finalize     = glade_base_editor_finalize;
+	object_class->dispose      = glade_base_editor_dispose;
 	object_class->set_property = glade_base_editor_set_property;
 	object_class->get_property = glade_base_editor_get_property;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]