aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-tree-sorted.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/table/e-tree-sorted.c')
-rw-r--r--widgets/table/e-tree-sorted.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/widgets/table/e-tree-sorted.c b/widgets/table/e-tree-sorted.c
index 16ee5160eb..7069369a38 100644
--- a/widgets/table/e-tree-sorted.c
+++ b/widgets/table/e-tree-sorted.c
@@ -1024,13 +1024,19 @@ ets_proxy_node_changed (ETreeModel *etm, ETreePath node, ETreeSorted *ets)
}
ets->priv->root = new_path(NULL, node);
e_tree_model_node_changed(E_TREE_MODEL(ets), ets->priv->root);
+ return;
} else {
ETreeSortedPath *path = find_path(ets, node);
if (path) {
free_children(path);
- if (!reposition_path(ets, path))
+ if (!reposition_path(ets, path)) {
e_tree_model_node_changed(E_TREE_MODEL(ets), path);
+ } else {
+ e_tree_model_no_change(E_TREE_MODEL(ets));
+ }
+ } else {
+ e_tree_model_no_change(E_TREE_MODEL(ets));
}
}
}
@@ -1043,6 +1049,8 @@ ets_proxy_node_data_changed (ETreeModel *etm, ETreePath node, ETreeSorted *ets)
if (path) {
if (!reposition_path(ets, path))
e_tree_model_node_data_changed(E_TREE_MODEL(ets), path);
+ else
+ e_tree_model_no_change(E_TREE_MODEL(ets));
} else
e_tree_model_no_change(E_TREE_MODEL(ets));
}
@@ -1058,6 +1066,8 @@ ets_proxy_node_col_changed (ETreeModel *etm, ETreePath node, int col, ETreeSorte
changed = reposition_path(ets, path);
if (!changed)
e_tree_model_node_col_changed(E_TREE_MODEL(ets), path, col);
+ else
+ e_tree_model_no_change(E_TREE_MODEL(ets));
} else
e_tree_model_no_change(E_TREE_MODEL(ets));
}
@@ -1122,7 +1132,11 @@ ets_proxy_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETr
if (child) {
ets->priv->root = new_path(NULL, child);
e_tree_model_node_inserted(E_TREE_MODEL(ets), NULL, ets->priv->root);
+ } else {
+ e_tree_model_no_change(E_TREE_MODEL(ets));
}
+ } else {
+ e_tree_model_no_change(E_TREE_MODEL(ets));
}
}