From 9e14fe9c69d4b07b87721b3895c3b75474efd7b4 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Fri, 25 May 2001 20:57:04 +0000 Subject: Remove row i instead of row row. Destroy et->group when you get the 2001-05-25 Christopher James Lahey * e-table.c (et_table_rows_deleted): Remove row i instead of row row. Destroy et->group when you get the changed or sort_info_changed signal instead of in the idle handler. svn path=/trunk/; revision=10002 --- widgets/table/e-table.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'widgets/table/e-table.c') diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c index 2112b2ee2d..9293965824 100644 --- a/widgets/table/e-table.c +++ b/widgets/table/e-table.c @@ -307,8 +307,11 @@ sort_info_changed (ETableSortInfo *info, ETable *et) gboolean will_be_grouped = e_table_sort_info_grouping_get_count(info) > 0; if (et->is_grouped || will_be_grouped) { et->need_rebuild = TRUE; - if (!et->rebuild_idle_id) + if (!et->rebuild_idle_id) { + gtk_object_destroy (GTK_OBJECT (et->group)); + et->group = NULL; et->rebuild_idle_id = g_idle_add_full (20, changed_idle, et, NULL); + } } } @@ -529,8 +532,11 @@ static void et_table_model_changed (ETableModel *model, ETable *et) { et->need_rebuild = TRUE; - if (!et->rebuild_idle_id) + if (!et->rebuild_idle_id) { + gtk_object_destroy (GTK_OBJECT (et->group)); + et->group = NULL; et->rebuild_idle_id = g_idle_add_full (20, changed_idle, et, NULL); + } } static void @@ -573,7 +579,7 @@ et_table_rows_deleted (ETableModel *table_model, int row, int count, ETable *et) if (!et->need_rebuild) { int i; for (i = 0; i < count; i++) - e_table_group_remove (et->group, row); + e_table_group_remove (et->group, i); if (row != row_count) e_table_group_decrement(et->group, row, count); if (et->horizontal_scrolling) @@ -650,7 +656,8 @@ changed_idle (gpointer data) ETable *et = E_TABLE (data); if (et->need_rebuild) { - gtk_object_destroy (GTK_OBJECT (et->group)); + if (et->group) + gtk_object_destroy (GTK_OBJECT (et->group)); et_build_groups(et); gtk_object_set (GTK_OBJECT (et->canvas_vbox), "width", (double) GTK_WIDGET (et->table_canvas)->allocation.width, -- cgit v1.2.3