diff options
author | Jody Goldberg <jody@gnome.org> | 2002-03-12 12:28:03 +0800 |
---|---|---|
committer | Jody Goldberg <jody@src.gnome.org> | 2002-03-12 12:28:03 +0800 |
commit | fa3384310dff37347de3bee9d6bfb25936f81868 (patch) | |
tree | 564054e028e82af656b5b9875ff19ad3d68d95ed | |
parent | 792c9eb33948cda8e228ad14c41a1d6c39dca372 (diff) | |
download | gsoc2013-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.c | 2 | ||||
-rw-r--r-- | widgets/table/e-table-group-leaf.c | 5 | ||||
-rw-r--r-- | widgets/table/e-table-specification.c | 2 | ||||
-rw-r--r-- | widgets/table/e-table.c | 30 |
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)); |