diff options
author | D.B <thejan.2009@gmail.com> | 2016-11-17 06:49:12 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2016-12-04 08:31:34 -0500 |
commit | 35b8d185ac58eaaeb12a95d6947cdcb78a2ee487 (patch) | |
tree | fdfeef48c18a9a484b7491d38a6ee0be12801f7c /sway | |
parent | 4762bcb3b9a1b9043ce78c7765d4513b0c5da635 (diff) |
fix layout switching (was broken because of workspace_layout)
For workspace containers, swayc_change_layout also changes ->layout alongside
->workspace_layout when it's a sensible thing to do. There is an additional test
for 'layout toggle' command which ensures that containers will be tiled
horizontally after toggling from tabbed or stacked.
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands/layout.c | 2 | ||||
-rw-r--r-- | sway/container.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/sway/commands/layout.c b/sway/commands/layout.c index bef06cb2..08336150 100644 --- a/sway/commands/layout.c +++ b/sway/commands/layout.c @@ -49,7 +49,7 @@ struct cmd_results *cmd_layout(int argc, char **argv) { } else if (strcasecmp(argv[0], "splitv") == 0) { swayc_change_layout(parent, L_VERT); } else if (strcasecmp(argv[0], "toggle") == 0 && argc == 2 && strcasecmp(argv[1], "split") == 0) { - if (parent->layout == L_HORIZ) { + if (parent->layout == L_HORIZ && (parent->workspace_layout == L_NONE || parent->workspace_layout == L_HORIZ)) { swayc_change_layout(parent, L_VERT); } else { swayc_change_layout(parent, L_HORIZ); diff --git a/sway/container.c b/sway/container.c index c588f3db..e5284200 100644 --- a/sway/container.c +++ b/sway/container.c @@ -950,6 +950,9 @@ swayc_t *swayc_tabbed_stacked_parent(swayc_t *con) { swayc_t *swayc_change_layout(swayc_t *container, enum swayc_layouts layout) { if (container->type == C_WORKSPACE) { container->workspace_layout = layout; + if (layout == L_HORIZ || layout == L_VERT) { + container->layout = layout; + } } else { container->layout = layout; } |