aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-table.c
diff options
context:
space:
mode:
authorRodrigo Moya <rodrigo@gnome-db.org>2011-10-10 18:50:18 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-10-10 18:50:18 +0800
commit56a166bb42bd55216a489c0b850ddd6bca2a3cd5 (patch)
tree3f87cf07fd6098ab2700c56d71d97686c5e5bc71 /widgets/table/e-table.c
parent8fd93c9042bb30e53ce88303f8a0789a6ca688eb (diff)
parent6d5db4c7cd468d424ea8628344c5a1bba6fc3d7c (diff)
downloadgsoc2013-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.c33
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);
+ }
+}