mirror of
https://github.com/swaywm/sway.git
synced 2026-04-29 06:46:22 -04: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
3 changed files with 5 additions and 2 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue