diff options
author | Christopher James Lahey <clahey@ximian.com> | 2001-10-31 18:33:51 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2001-10-31 18:33:51 +0800 |
commit | 23587bebe83c772d08ab2ae7faa31dffa45b0987 (patch) | |
tree | 610958e3503f902d708b7facdbc381315b62f317 /widgets/table/e-table-without.c | |
parent | a06c0a0d1265e81e0672c859742474c623f3d2d8 (diff) | |
download | gsoc2013-evolution-23587bebe83c772d08ab2ae7faa31dffa45b0987.tar.gz gsoc2013-evolution-23587bebe83c772d08ab2ae7faa31dffa45b0987.tar.zst gsoc2013-evolution-23587bebe83c772d08ab2ae7faa31dffa45b0987.zip |
Added frozen_count variable to know not to show the cursor while a change
2001-10-31 Christopher James Lahey <clahey@ximian.com>
* e-table-item.c, e-table-item.h: Added frozen_count variable to
know not to show the cursor while a change is going on.
* e-table-model.c, e-table-model.h, e-tree-model.c,
e-tree-model.h: Added a model_no_change signal to pair with a
pre_change if there's no change.
* e-table-selection-model.h: Removed an unused frozen field here.
* e-table-sorted.c, e-table-subset.c, e-table-subset.h,
e-table-without.c, e-tree-memory.c, e-tree-sorted.c,
e-tree-table-adapter.c: Made sure pre_changes were all matched by
some change. Proxy no_change signal where appropriate.
* e-tree-selection-model.c: Keep track of the frozen_count
variable to know whether a change is going on.
svn path=/trunk/; revision=14523
Diffstat (limited to 'widgets/table/e-table-without.c')
-rw-r--r-- | widgets/table/e-table-without.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/widgets/table/e-table-without.c b/widgets/table/e-table-without.c index 7a1989980a..f6d4fe3b86 100644 --- a/widgets/table/e-table-without.c +++ b/widgets/table/e-table-without.c @@ -153,11 +153,15 @@ etw_proxy_model_rows_inserted (ETableSubset *etss, ETableModel *etm, int model_r { int i; ETableWithout *etw = E_TABLE_WITHOUT (etss); + gboolean shift = FALSE; /* i is View row */ - for (i = 0; i < etss->n_map; i++) { - if (etss->map_table[i] > model_row) - etss->map_table[i] += count; + if (model_row != etss->n_map) { + for (i = 0; i < etss->n_map; i++) { + if (etss->map_table[i] > model_row) + etss->map_table[i] += count; + } + shift = TRUE; } /* i is Model row */ @@ -166,6 +170,10 @@ etw_proxy_model_rows_inserted (ETableSubset *etss, ETableModel *etm, int model_r add_row (etw, i); } } + if (shift) + e_table_model_changed (E_TABLE_MODEL (etw)); + else + e_table_model_no_change (E_TABLE_MODEL (etw)); } static void @@ -173,14 +181,21 @@ etw_proxy_model_rows_deleted (ETableSubset *etss, ETableModel *etm, int model_ro { int i; /* View row */ ETableWithout *etw = E_TABLE_WITHOUT (etss); + gboolean shift = FALSE; for (i = 0; i < etss->n_map; i++) { if (etss->map_table[i] >= model_row && etss->map_table[i] < model_row + count) { remove_row (etw, i); i--; - } else if (etss->map_table[i] >= model_row + count) + } else if (etss->map_table[i] >= model_row + count) { etss->map_table[i] -= count; + shift = TRUE; + } } + if (shift) + e_table_model_changed (E_TABLE_MODEL (etw)); + else + e_table_model_no_change (E_TABLE_MODEL (etw)); } static void |