diff options
Diffstat (limited to 'widgets/table/e-tree-table-adapter.c')
-rw-r--r-- | widgets/table/e-tree-table-adapter.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/widgets/table/e-tree-table-adapter.c b/widgets/table/e-tree-table-adapter.c index 1fff0eb560..13635f4aa9 100644 --- a/widgets/table/e-tree-table-adapter.c +++ b/widgets/table/e-tree-table-adapter.c @@ -474,7 +474,7 @@ update_node(ETreeTableAdapter *etta, ETreePath path) closure.paths = NULL; if (gnode) - g_node_traverse(gnode, G_IN_ORDER, G_TRAVERSE_ALL, -1, check_expanded, &closure); + g_node_traverse(gnode, G_POST_ORDER, G_TRAVERSE_ALL, -1, check_expanded, &closure); if (e_tree_model_node_is_root(etta->priv->source, path)) generate_tree(etta, path); @@ -484,7 +484,8 @@ update_node(ETreeTableAdapter *etta, ETreePath path) } for (l = closure.paths; l; l = l->next) - e_tree_table_adapter_node_set_expanded (etta, l->data, !closure.expanded); + if (lookup_gnode(etta, l->data)) + e_tree_table_adapter_node_set_expanded (etta, l->data, !closure.expanded); g_slist_free(closure.paths); } |