diff options
author | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-10-10 18:50:18 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-10-10 18:50:18 +0800 |
commit | 56a166bb42bd55216a489c0b850ddd6bca2a3cd5 (patch) | |
tree | 3f87cf07fd6098ab2700c56d71d97686c5e5bc71 /widgets/table/e-table.c | |
parent | 8fd93c9042bb30e53ce88303f8a0789a6ca688eb (diff) | |
parent | 6d5db4c7cd468d424ea8628344c5a1bba6fc3d7c (diff) | |
download | gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar.gz gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar.bz2 gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar.lz gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar.xz gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.tar.zst gsoc2013-evolution-56a166bb42bd55216a489c0b850ddd6bca2a3cd5.zip |
Merge branch 'master' into wip/gsettings
Diffstat (limited to 'widgets/table/e-table.c')
-rw-r--r-- | widgets/table/e-table.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c index 472681796f..e81dc6b23c 100644 --- a/widgets/table/e-table.c +++ b/widgets/table/e-table.c @@ -203,7 +203,10 @@ et_disconnect_model (ETable *et) static void e_table_state_change (ETable *et) { - g_signal_emit (G_OBJECT (et), et_signals[STATE_CHANGE], 0); + if (et->state_change_freeze) + et->state_changed = TRUE; + else + g_signal_emit (G_OBJECT (et), et_signals[STATE_CHANGE], 0); } #define CHECK_HORIZONTAL(et) \ @@ -605,6 +608,9 @@ e_table_init (ETable *e_table) e_table->current_search_col = NULL; e_table->header_width = 0; + + e_table->state_changed = FALSE; + e_table->state_change_freeze = 0; } /* Grab_focus handler for the ETable */ @@ -3709,3 +3715,28 @@ e_table_class_init (ETableClass *class) gal_a11y_e_table_init (); } + +void +e_table_freeze_state_change (ETable *table) +{ + g_return_if_fail (table != NULL); + + table->state_change_freeze++; + if (table->state_change_freeze == 1) + table->state_changed = FALSE; + + g_return_if_fail (table->state_change_freeze != 0); +} + +void +e_table_thaw_state_change (ETable *table) +{ + g_return_if_fail (table != NULL); + g_return_if_fail (table->state_change_freeze != 0); + + table->state_change_freeze--; + if (table->state_change_freeze == 0 && table->state_changed) { + table->state_changed = FALSE; + e_table_state_change (table); + } +} |