mirror of
https://github.com/swaywm/sway.git
synced 2024-11-26 09:51: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
4762bcb3b9
commit
35b8d185ac
|
@ -324,7 +324,7 @@ void close_views(swayc_t *container);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign layout to a container. Needed due to workspace container specifics.
|
* 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);
|
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) {
|
} else if (strcasecmp(argv[0], "splitv") == 0) {
|
||||||
swayc_change_layout(parent, L_VERT);
|
swayc_change_layout(parent, L_VERT);
|
||||||
} else if (strcasecmp(argv[0], "toggle") == 0 && argc == 2 && strcasecmp(argv[1], "split") == 0) {
|
} 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);
|
swayc_change_layout(parent, L_VERT);
|
||||||
} else {
|
} else {
|
||||||
swayc_change_layout(parent, L_HORIZ);
|
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) {
|
swayc_t *swayc_change_layout(swayc_t *container, enum swayc_layouts layout) {
|
||||||
if (container->type == C_WORKSPACE) {
|
if (container->type == C_WORKSPACE) {
|
||||||
container->workspace_layout = layout;
|
container->workspace_layout = layout;
|
||||||
|
if (layout == L_HORIZ || layout == L_VERT) {
|
||||||
|
container->layout = layout;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
container->layout = layout;
|
container->layout = layout;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue