mirror of
https://github.com/swaywm/sway.git
synced 2024-11-28 19:01:29 +00:00
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.
This commit is contained in:
parent
01e413976d
commit
ef08ec6ca8
|
@ -324,7 +324,7 @@ void close_views(swayc_t *container);
|
|||
|
||||
/**
|
||||
* Assign layout to a container. Needed due to workspace container specifics.
|
||||
* Workspace always needs L_HORIZ layout.
|
||||
* Workspace should always have either L_VERT or L_HORIZ layout.
|
||||
*/
|
||||
swayc_t *swayc_change_layout(swayc_t *container, enum swayc_layouts layout);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue