[gnumeric] Validation: fix chaining of finalize calls.



commit efe2432c238f625e90d82273d06d6f84a3b5706b
Author: Morten Welinder <terra gnome org>
Date:   Thu Jul 9 11:57:57 2009 -0400

    Validation: fix chaining of finalize calls.

 ChangeLog                    |    3 +++
 src/gnm-cell-combo.c         |   16 +++++++---------
 src/gnm-sheet-slicer-combo.c |   18 +++++++++++++-----
 src/validation.c             |   12 +++++++++---
 4 files changed, 32 insertions(+), 17 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a461d05..7fcc23d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2009-07-09  Morten Welinder  <terra gnome org>
 
+	* src/validation.c (gnm_validation_combo_finalize): Call the right
+	parent class' finalizer.
+
 	* src/gnumeric-gconf.c (gnm_conf_init): Handle new debug flags
 	"conf-get" and "conf-set".
 
diff --git a/src/gnm-cell-combo.c b/src/gnm-cell-combo.c
index f0e021c..674f413 100644
--- a/src/gnm-cell-combo.c
+++ b/src/gnm-cell-combo.c
@@ -31,6 +31,8 @@ enum {
 	PROP_SV,
 };
 
+static GObjectClass *gcc_parent_klass;
+
 static void
 gnm_cell_combo_set_sv (GnmCellCombo *ccombo, SheetView *sv)
 {
@@ -49,22 +51,16 @@ static void
 gnm_cell_combo_finalize (GObject *object)
 {
 	GnmCellCombo *ccombo = GNM_CELL_COMBO (object);
-	GObjectClass *parent;
-
 	gnm_cell_combo_set_sv (ccombo, NULL);
-	parent = g_type_class_peek (SHEET_OBJECT_TYPE);
-	parent->finalize (object);
+	gcc_parent_klass->finalize (object);
 }
 
 static void
 gnm_cell_combo_dispose (GObject *object)
 {
 	GnmCellCombo *ccombo = GNM_CELL_COMBO (object);
-	GObjectClass *parent;
-
 	gnm_cell_combo_set_sv (ccombo, NULL);
-	parent = g_type_class_peek (SHEET_OBJECT_TYPE);
-	parent->dispose (object);
+	gcc_parent_klass->dispose (object);
 }
 
 static void
@@ -111,6 +107,9 @@ static void
 gnm_cell_combo_class_init (GObjectClass *gobject_class)
 {
 	SheetObjectClass *so_class = SHEET_OBJECT_CLASS (gobject_class);
+
+	gcc_parent_klass = g_type_class_peek_parent (gobject_class);
+
 	gobject_class->dispose		= gnm_cell_combo_dispose;
 	gobject_class->finalize		= gnm_cell_combo_finalize;
 	gobject_class->get_property	= gnm_cell_combo_get_property;
@@ -128,4 +127,3 @@ gnm_cell_combo_class_init (GObjectClass *gobject_class)
 GSF_CLASS_ABSTRACT (GnmCellCombo, gnm_cell_combo,
 		    gnm_cell_combo_class_init, gnm_cell_combo_init,
 		    SHEET_OBJECT_TYPE)
-
diff --git a/src/gnm-sheet-slicer-combo.c b/src/gnm-sheet-slicer-combo.c
index d864583..f8d3357 100644
--- a/src/gnm-sheet-slicer-combo.c
+++ b/src/gnm-sheet-slicer-combo.c
@@ -33,16 +33,16 @@ enum {
 	PROP_FIELD
 };
 
+static GObjectClass *gssc_parent_klass;
+
 static void
 gnm_sheet_slicer_combo_finalize (GObject *object)
 {
 #if 0
 	GnmSheetSlicerCombo *sscombo = GNM_SHEET_SLICER_COMBO (object);
 #endif
-	GObjectClass *parent;
 
-	parent = g_type_class_peek (gnm_cell_combo_get_type ());
-	parent->finalize (object);
+	gssc_parent_klass->finalize (object);
 }
 
 static void
@@ -64,7 +64,9 @@ gnm_sheet_slicer_combo_set_property (GObject *obj, guint property_id,
 	GnmSheetSlicerCombo *sscombo = (GnmSheetSlicerCombo *)obj;
 
 	switch (property_id) {
-	case PROP_FIELD : sscombo->dsf =  g_value_get_object (value); break;
+	case PROP_FIELD:
+		sscombo->dsf = g_value_get_object (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec);
 	}
@@ -76,15 +78,21 @@ gnm_sheet_slicer_combo_get_property (GObject *obj, guint property_id,
 {
 	GnmSheetSlicerCombo const *sscombo = (GnmSheetSlicerCombo const *)obj;
 	switch (property_id) {
-	case PROP_FIELD : g_value_set_object (value, (GObject *) (sscombo->dsf)); break;
+	case PROP_FIELD:
+		g_value_set_object (value, (GObject *) (sscombo->dsf));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec);
 	}
 }
+
 static void
 gnm_sheet_slicer_combo_class_init (GObjectClass *gobject_class)
 {
 	SheetObjectClass *so_class = SHEET_OBJECT_CLASS (gobject_class);
+
+	gssc_parent_klass = g_type_class_peek_parent (gobject_class);
+
 	gobject_class->set_property	= gnm_sheet_slicer_combo_set_property;
 	gobject_class->get_property	= gnm_sheet_slicer_combo_get_property;
 	gobject_class->finalize		= gnm_sheet_slicer_combo_finalize;
diff --git a/src/validation.c b/src/validation.c
index 29bc73a..0e7bcf2 100644
--- a/src/validation.c
+++ b/src/validation.c
@@ -82,35 +82,41 @@ static struct {
 
 /***************************************************************************/
 
+static GObjectClass *gvc_parent_klass;
+
 static void
 gnm_validation_combo_finalize (GObject *object)
 {
 	GnmValidationCombo *vcombo = GNM_VALIDATION_COMBO (object);
-	GObjectClass *parent;
+
 	if (NULL != vcombo->validation) {
 		validation_unref (vcombo->validation);
 		vcombo->validation = NULL;
 	}
-	parent = g_type_class_peek (SHEET_OBJECT_TYPE);
-	parent->finalize (object);
+
+	gvc_parent_klass->finalize (object);
 }
 
 static void
 gnm_validation_combo_init (SheetObject *so)
 {
 }
+
 static SheetObjectView *
 gnm_validation_combo_foo_view_new (SheetObject *so, SheetObjectViewContainer *container)
 {
 	return gnm_cell_combo_foo_view_new (so,
 		gnm_validation_combo_foo_view_get_type (), container);
 }
+
 static void
 gnm_validation_combo_class_init (GObjectClass *gobject_class)
 {
 	SheetObjectClass *so_class = SHEET_OBJECT_CLASS (gobject_class);
 	gobject_class->finalize	= gnm_validation_combo_finalize;
 	so_class->new_view	  = gnm_validation_combo_foo_view_new;
+
+	gvc_parent_klass = g_type_class_peek_parent (gobject_class);
 }
 
 typedef SheetObjectClass GnmValidationComboClass;



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