From b5ddad4bf64c3541ab765c56f84a90842c2d4512 Mon Sep 17 00:00:00 2001 From: "S. Christoffer Eliesen" Date: Tue, 24 Nov 2015 20:58:02 +0100 Subject: [PATCH] layout: swap_container: Handle floating views. --- sway/layout.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sway/layout.c b/sway/layout.c index 23d99e35e..ac56f7b20 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -174,7 +174,6 @@ swayc_t *remove_child(swayc_t *child) { } void swap_container(swayc_t *a, swayc_t *b) { - //TODO doesnt handle floating <-> tiling swap if (!sway_assert(a&&b, "parameters must be non null") || !sway_assert(a->parent && b->parent, "containers must have parents")) { return; @@ -184,8 +183,16 @@ void swap_container(swayc_t *a, swayc_t *b) { swayc_t *a_parent = a->parent; swayc_t *b_parent = b->parent; // Swap the pointers - a_parent->children->items[a_index] = b; - b_parent->children->items[b_index] = a; + if (a->is_floating) { + a_parent->floating->items[a_index] = b; + } else { + a_parent->children->items[a_index] = b; + } + if (b->is_floating) { + b_parent->floating->items[b_index] = a; + } else { + b_parent->children->items[b_index] = a; + } a->parent = b_parent; b->parent = a_parent; if (a_parent->focused == a) {