Tiling2: Fixed tree update bugs.
authorTom Hacohen <tom@stosb.com>
Mon, 13 Jan 2014 17:48:17 +0000 (17:48 +0000)
committerTom Hacohen <tom@stosb.com>
Fri, 21 Feb 2014 09:15:05 +0000 (09:15 +0000)
src/modules/tiling/window_tree.c

index ac05929..8c6e482 100644 (file)
@@ -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);
      }