diff options
Diffstat (limited to 'widgets/table/e-tree-sorted.c')
-rw-r--r-- | widgets/table/e-tree-sorted.c | 16 |
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)); } } |