diff options
author | Miguel de Icaza <miguel@gnu.org> | 1999-12-02 02:18:35 +0800 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1999-12-02 02:18:35 +0800 |
commit | 9c0f9f1264f8083d177a01bf01e75e8787d587ed (patch) | |
tree | 5a966e5e5a992eb4ab01c20ddf7b203db454c97d /widgets/e-table/e-table-header.c | |
parent | 5dd5e9ffe2ba0c27c22281ebe62f9a565d184c38 (diff) | |
download | gsoc2013-evolution-9c0f9f1264f8083d177a01bf01e75e8787d587ed.tar.gz gsoc2013-evolution-9c0f9f1264f8083d177a01bf01e75e8787d587ed.tar.zst gsoc2013-evolution-9c0f9f1264f8083d177a01bf01e75e8787d587ed.zip |
Removed change cursor from here.
1999-12-01 Miguel de Icaza <miguel@gnu.org>
* e-table-header-item.c (ethi_unrealize): Removed change cursor
from here.
* e-cell-text.c (ect_draw): Memory leak fix.
* table-test.c (main): Enhance the demo to load sample.table
automatically, to get memprof working.
* e-table-header.c (eth_do_remove): Take an argument: do -remove.
* e-table-header.c (e_table_header_add_column): Sink ETableCol to
own the object.
* e-table-col.h: Made ETableCol a GtkObject to make reference
counting the lifecycle method for these objects.
* e-table-col.c (e_table_col_destroy): New API call.
* e-table-subset.c (e_table_subset_get_toplevel): New API call.
svn path=/trunk/; revision=1450
Diffstat (limited to 'widgets/e-table/e-table-header.c')
-rw-r--r-- | widgets/e-table/e-table-header.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/widgets/e-table/e-table-header.c b/widgets/e-table/e-table-header.c index 5900c5ca4f..e91113bbb9 100644 --- a/widgets/e-table/e-table-header.c +++ b/widgets/e-table/e-table-header.c @@ -31,8 +31,9 @@ e_table_header_destroy (GtkObject *object) /* * Destroy columns */ - for (i = 0; i < cols; i++) + for (i = 0; i < cols; i++){ e_table_header_remove (eth, i); + } if (e_table_header_parent_class->destroy) e_table_header_parent_class->destroy (object); @@ -124,11 +125,19 @@ e_table_header_add_column (ETableHeader *eth, ETableCol *tc, int pos) g_return_if_fail (eth != NULL); g_return_if_fail (E_IS_TABLE_HEADER (eth)); g_return_if_fail (tc != NULL); + g_return_if_fail (E_IS_TABLE_COL (tc)); g_return_if_fail (pos >= 0 && pos <= eth->col_count); if (pos == -1) pos = eth->col_count; eth->columns = g_realloc (eth->columns, sizeof (ETableCol *) * (eth->col_count + 1)); + + /* + * We are the primary owners of the column + */ + gtk_object_ref (GTK_OBJECT (tc)); + gtk_object_sink (GTK_OBJECT (tc)); + eth_do_insert (eth, pos, tc); eth->col_count++; eth_update_offsets (eth); @@ -255,8 +264,11 @@ e_table_header_total_width (ETableHeader *eth) } static void -eth_do_remove (ETableHeader *eth, int idx) +eth_do_remove (ETableHeader *eth, int idx, gboolean do_unref) { + if (do_unref) + gtk_object_unref (GTK_OBJECT (eth->columns [idx])); + memcpy (ð->columns [idx], ð->columns [idx+1], sizeof (ETableCol *) * eth->col_count - idx); eth->col_count--; @@ -275,7 +287,7 @@ e_table_header_move (ETableHeader *eth, int source_index, int target_index) g_return_if_fail (target_index < eth->col_count); old = eth->columns [source_index]; - eth_do_remove (eth, source_index); + eth_do_remove (eth, source_index, FALSE); eth_do_insert (eth, target_index, old); eth_update_offsets (eth); @@ -290,7 +302,7 @@ e_table_header_remove (ETableHeader *eth, int idx) g_return_if_fail (idx >= 0); g_return_if_fail (idx < eth->col_count); - eth_do_remove (eth, idx); + eth_do_remove (eth, idx, TRUE); gtk_signal_emit (GTK_OBJECT (eth), eth_signals [STRUCTURE_CHANGE]); } |