From fae7056ea7b29703202bdbebffef3ad7490643c3 Mon Sep 17 00:00:00 2001 From: Bonsaiiv Date: Wed, 15 Oct 2025 12:11:38 +0200 Subject: [PATCH] applied feedback --- sway/commands/layout.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sway/commands/layout.c b/sway/commands/layout.c index 10462bf16..22dfdf3d7 100644 --- a/sway/commands/layout.c +++ b/sway/commands/layout.c @@ -136,12 +136,16 @@ struct cmd_results *cmd_layout(int argc, char **argv) { 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 && container->pending.parent && container->pending.parent->pending.children->length == 1) { - struct sway_container *child = container->pending.children->items[0]; + if (container && container->pending.children->length == 1) { + // Also check grandparent to avoid restricting layouts struct sway_container *parent = container->pending.parent; - container_replace(container, child); - container_begin_destroy(container); - container = parent; + if (parent && parent->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; + } } }