sway/commands/layout: flatten parent once

Applying layout changes to the parent of the parent, in case the parent only has a single child, stops the creation of a chain of single child containers.

Closes: https://github.com/swaywm/sway/issues/7945
This commit is contained in:
bonsaiiV 2025-08-03 13:25:40 +00:00 committed by GitHub
parent 87fbcf0574
commit f50e307227
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -134,6 +134,15 @@ struct cmd_results *cmd_layout(int argc, char **argv) {
// Operate on parent container, like i3.
if (container) {
container = container->pending.parent;
// If parent has only a singe child operate on its parent and
// flatten once, like i3
if (container && container->pending.children->length == 1) {
struct sway_container *child = container->pending.children->items[0];
struct sway_container *parent = container->pending.parent;
container_replace(container, child);
container_begin_destroy(container);
container = parent;
}
}
// We could be working with a container OR a workspace. These are different