aboutsummaryrefslogtreecommitdiff
path: root/sway/tree/layout.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/layout.c')
-rw-r--r--sway/tree/layout.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sway/tree/layout.c b/sway/tree/layout.c
index 77b2448a..78af8b8c 100644
--- a/sway/tree/layout.c
+++ b/sway/tree/layout.c
@@ -331,11 +331,17 @@ void container_move(struct sway_container *container,
}
case C_WORKSPACE:
if (!is_parallel(current->layout, move_dir)) {
- if (current->children->length != 1) {
- // Special case
+ if (current->children->length > 2) {
wlr_log(L_DEBUG, "Rejiggering the workspace (%d kiddos)",
current->children->length);
workspace_rejigger(current, container, move_dir);
+ } else if (current->children->length == 2) {
+ wlr_log(L_DEBUG, "Changing workspace layout");
+ container_set_layout(current,
+ move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ?
+ L_HORIZ : L_VERT);
+ container_insert_child(current, container, offs < 0 ? 0 : 1);
+ arrange_windows(current, -1, -1);
}
return;
} else {