aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJody Goldberg <jody@gnome.org>2002-03-12 12:28:03 +0800
committerJody Goldberg <jody@src.gnome.org>2002-03-12 12:28:03 +0800
commitfa3384310dff37347de3bee9d6bfb25936f81868 (patch)
tree564054e028e82af656b5b9875ff19ad3d68d95ed
parent792c9eb33948cda8e228ad14c41a1d6c39dca372 (diff)
downloadgsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar.gz
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar.bz2
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar.lz
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar.xz
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.tar.zst
gsoc2013-evolution-fa3384310dff37347de3bee9d6bfb25936f81868.zip
hack ref/sink in here. This should really be a GObject.
2002-03-11 Jody Goldberg <jody@gnome.org> * gal/util/e-bit-array.c (e_bit_array_new) : hack ref/sink in here. This should really be a GObject. * gal/e-table/e-table-specification.c (e_table_specification_load_from_node) : ref/sink the columns. * gal/e-table/e-table.c (et_real_construct) : ref/sink the e_table_extras, and the sorter. (e_table_construct) : ref/sink the spec and the state. (et_destroy) : fix protection in the face of multiple calls. (e_table_init) : ref/sink the selection model. * configure.in : fix the so number. svn path=/branches/gal-2/; revision=16118
-rw-r--r--e-util/e-bit-array.c2
-rw-r--r--widgets/table/e-table-group-leaf.c5
-rw-r--r--widgets/table/e-table-specification.c2
-rw-r--r--widgets/table/e-table.c30
4 files changed, 33 insertions, 6 deletions
diff --git a/e-util/e-bit-array.c b/e-util/e-bit-array.c
index e521c4deed..52219a6bfd 100644
--- a/e-util/e-bit-array.c
+++ b/e-util/e-bit-array.c
@@ -426,5 +426,7 @@ e_bit_array_new (int count)
EBitArray *eba = gtk_type_new (e_bit_array_get_type ());
eba->bit_count = count;
eba->data = g_new0(gint, (eba->bit_count + 31) / 32);
+ gtk_object_ref (GTK_OBJECT (eba));
+ gtk_object_sink (GTK_OBJECT (eba));
return eba;
}
diff --git a/widgets/table/e-table-group-leaf.c b/widgets/table/e-table-group-leaf.c
index c41bf7cbe4..dfb1fb2773 100644
--- a/widgets/table/e-table-group-leaf.c
+++ b/widgets/table/e-table-group-leaf.c
@@ -128,6 +128,8 @@ e_table_group_leaf_construct (GnomeCanvasGroup *parent,
full_header,
sort_info));
+ gtk_object_ref (GTK_OBJECT (etgl->ets));
+ gtk_object_sink (GTK_OBJECT (etgl->ets));
e_table_group_construct (parent, E_TABLE_GROUP (etgl), full_header, header, model);
}
@@ -449,8 +451,9 @@ etgl_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
if (etgl->selection_model)
gtk_object_unref(GTK_OBJECT(etgl->selection_model));
etgl->selection_model = E_SELECTION_MODEL(GTK_VALUE_OBJECT (*arg));
- if (etgl->selection_model)
+ if (etgl->selection_model) {
gtk_object_ref(GTK_OBJECT(etgl->selection_model));
+ }
if (etgl->item) {
gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
"selection_model", etgl->selection_model,
diff --git a/widgets/table/e-table-specification.c b/widgets/table/e-table-specification.c
index 290199d1b1..21598843fc 100644
--- a/widgets/table/e-table-specification.c
+++ b/widgets/table/e-table-specification.c
@@ -233,6 +233,8 @@ e_table_specification_load_from_node (ETableSpecification *specification,
if (!strcmp (children->name, "ETableColumn")) {
ETableColumnSpecification *col_spec = e_table_column_specification_new ();
+ gtk_object_ref (GTK_OBJECT (col_spec));
+ gtk_object_sink (GTK_OBJECT (col_spec));
e_table_column_specification_load_from_node (col_spec, children);
list = g_list_append (list, col_spec);
} else if (specification->state == NULL && !strcmp (children->name, "ETableState")) {
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c
index 7cce79f258..3c51aec4fa 100644
--- a/widgets/table/e-table.c
+++ b/widgets/table/e-table.c
@@ -233,17 +233,19 @@ et_destroy (GtkObject *object)
if (et->header_canvas != NULL)
gtk_widget_destroy (GTK_WIDGET (et->header_canvas));
+ et->header_canvas = NULL;
if (et->site != NULL)
e_table_drag_source_unset (et);
et->site = NULL;
- gtk_widget_destroy (GTK_WIDGET (et->table_canvas));
+ if (et->table_canvas != NULL)
+ gtk_widget_destroy (GTK_WIDGET (et->table_canvas));
+ et->table_canvas = NULL;
- if (et->rebuild_idle_id) {
+ if (et->rebuild_idle_id != 0)
g_source_remove (et->rebuild_idle_id);
- et->rebuild_idle_id = 0;
- }
+ et->rebuild_idle_id = 0;
(*e_table_parent_class->destroy)(object);
}
@@ -298,6 +300,8 @@ e_table_init (GtkObject *object)
e_table->sorter = NULL;
e_table->selection = e_table_selection_model_new();
+ gtk_object_ref (GTK_OBJECT (e_table->selection));
+ gtk_object_sink (GTK_OBJECT (e_table->selection));
e_table->cursor_loc = E_TABLE_CURSOR_LOC_NONE;
e_table->spec = NULL;
}
@@ -1160,8 +1164,11 @@ et_real_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
if (ete)
gtk_object_ref(GTK_OBJECT(ete));
- else
+ else {
ete = e_table_extras_new();
+ gtk_object_ref(GTK_OBJECT(ete));
+ gtk_object_sink(GTK_OBJECT(ete));
+ }
e_table->use_click_to_add = specification->click_to_add;
e_table->use_click_to_add_end = specification->click_to_add_end;
@@ -1172,6 +1179,8 @@ et_real_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
e_table->draw_focus = specification->draw_focus;
e_table->cursor_mode = specification->cursor_mode;
e_table->full_header = e_table_spec_to_full_header(specification, ete);
+ gtk_object_ref (GTK_OBJECT (e_table->full_header));
+ gtk_object_sink (GTK_OBJECT (e_table->full_header));
gtk_object_set(GTK_OBJECT(e_table->selection),
"selection_mode", specification->selection_mode,
@@ -1184,6 +1193,8 @@ et_real_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
gtk_widget_push_colormap (gdk_rgb_get_cmap ());
e_table->header = e_table_state_to_header (GTK_WIDGET(e_table), e_table->full_header, state);
+ gtk_object_ref (GTK_OBJECT (e_table->header));
+ gtk_object_sink (GTK_OBJECT (e_table->header));
e_table->horizontal_scrolling = specification->horizontal_scrolling;
e_table->allow_grouping = specification->allow_grouping;
@@ -1201,6 +1212,8 @@ et_real_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
NULL);
e_table->sorter = e_table_sorter_new(etm, e_table->full_header, e_table->sort_info);
+ gtk_object_ref (GTK_OBJECT (e_table->sorter));
+ gtk_object_sink (GTK_OBJECT (e_table->sorter));
gtk_object_set (GTK_OBJECT (e_table->selection),
"model", etm,
@@ -1275,10 +1288,17 @@ e_table_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
g_return_val_if_fail(spec_str != NULL, NULL);
+ gtk_object_ref (GTK_OBJECT (etm));
+ gtk_object_sink (GTK_OBJECT (etm));
+
specification = e_table_specification_new();
+ gtk_object_ref (GTK_OBJECT (specification));
+ gtk_object_sink (GTK_OBJECT (specification));
e_table_specification_load_from_string(specification, spec_str);
if (state_str) {
state = e_table_state_new();
+ gtk_object_ref (GTK_OBJECT (state));
+ gtk_object_sink (GTK_OBJECT (state));
e_table_state_load_from_string(state, state_str);
if (state->col_count <= 0) {
gtk_object_unref(GTK_OBJECT(state));