From f64763ab6e49ad0352ae5ba165f4be0b4877115c Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Mon, 13 Jan 2014 17:48:17 +0000 Subject: [PATCH] Tiling2: Fixed tree update bugs. --- src/modules/tiling/window_tree.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/modules/tiling/window_tree.c b/src/modules/tiling/window_tree.c index ac0592932..8c6e4820d 100644 --- a/src/modules/tiling/window_tree.c +++ b/src/modules/tiling/window_tree.c @@ -83,6 +83,12 @@ tiling_window_tree_remove(Window_Tree *root, Window_Tree *item) free(item); return NULL; } + else if (!item->client) + { + ERR("Tried deleting node %p that doesn't have a client.", item); + return root; + } + int children_count = eina_inlist_count(item->parent->children); @@ -97,7 +103,18 @@ tiling_window_tree_remove(Window_Tree *root, Window_Tree *item) } item->parent->client = item_keep->client; - item->parent->children = NULL; + item->parent->children = item_keep->children; + item->parent->split_type = item_keep->split_type; + + /* Update the children's parent. */ + { + Window_Tree *itr; + + EINA_INLIST_FOREACH(item->parent->children, itr) + { + itr->parent = item->parent; + } + } free(item_keep); }