[goffice] A better fix to #610435.



commit 9031284871871ae6f68bb1d8925e5bfb3088aad8
Author: Jean Brefort <jean brefort normalesup org>
Date:   Fri Feb 19 20:50:34 2010 +0100

    A better fix to #610435.

 ChangeLog                               |    8 ++++++++
 goffice/graph/gog-guru-type-selector.ui |    3 ---
 goffice/graph/gog-object.c              |   13 +++++++++++--
 3 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index bfc741d..aa9a90e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2010-02-19  Jean Brefort  <jean brefort normalesup org>
 
+	* goffice/graph/gog-object.c (gog_object_parent_finalized),
+	(gog_object_finalize): ensure that children parent is set to NULL.
+	(gog_object_get_graph): restore previous version
+	* goffice/graph/gog-guru-type-selector.ui: remove orientation property
+	to avoid warnings with old gtk+.
+
+2010-02-19  Jean Brefort  <jean brefort normalesup org>
+
 	* goffice/graph/gog-object.c (gog_object_get_graph): avoid a crash if a
 	parent has been finalized. [#610435]
 
diff --git a/goffice/graph/gog-guru-type-selector.ui b/goffice/graph/gog-guru-type-selector.ui
index f4bfb2d..005b407 100644
--- a/goffice/graph/gog-guru-type-selector.ui
+++ b/goffice/graph/gog-guru-type-selector.ui
@@ -67,12 +67,10 @@
               <object class="GtkVPaned" id="vpaned1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="orientation">vertical</property>
                 <property name="position">250</property>
                 <child>
                   <object class="GtkVBox" id="sample-box">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkLabel" id="sample-label">
                         <property name="visible">True</property>
@@ -111,7 +109,6 @@
                 <child>
                   <object class="GtkVBox" id="rbox">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <property name="spacing">6</property>
                     <child>
                       <object class="GtkLabel" id="subtype_label">
diff --git a/goffice/graph/gog-object.c b/goffice/graph/gog-object.c
index eede7a1..0a4bf3c 100644
--- a/goffice/graph/gog-object.c
+++ b/goffice/graph/gog-object.c
@@ -92,6 +92,13 @@ static GObjectClass *parent_klass;
 static void gog_object_set_id (GogObject *obj, unsigned id);
 
 static void
+gog_object_parent_finalized (GogObject *obj)
+{
+	obj->parent = NULL;
+	g_object_unref (obj);
+}
+
+static void
 gog_object_finalize (GObject *gobj)
 {
 	GogObject *obj = GOG_OBJECT (gobj);
@@ -99,7 +106,7 @@ gog_object_finalize (GObject *gobj)
 	g_free (obj->user_name); obj->user_name = NULL;
 	g_free (obj->auto_name); obj->auto_name = NULL;
 
-	g_slist_foreach (obj->children, (GFunc) g_object_unref, NULL);
+	g_slist_foreach (obj->children, (GFunc) gog_object_parent_finalized, NULL);
 	g_slist_free (obj->children);
 	obj->children = NULL;
 
@@ -946,7 +953,9 @@ gog_object_get_parent_typed (GogObject const *obj, GType t)
 GogGraph *
 gog_object_get_graph (GogObject const *obj)
 {
-	for (; GOG_IS_OBJECT (obj) ; obj = obj->parent)
+	g_return_val_if_fail (GOG_IS_OBJECT (obj), NULL);
+
+	for (; obj != NULL ; obj = obj->parent)
 		if (GOG_IS_GRAPH (obj))
 			return GOG_GRAPH (obj);
 	return NULL;



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