From bd3d973fbf165b46a39d3d45208066cf59a0c440 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 19 Apr 2023 21:11:36 -0700 Subject: [PATCH] Fix unintentional group swallowing when closing a window --- src/Hy3Layout.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp index c250424..42ad550 100644 --- a/src/Hy3Layout.cpp +++ b/src/Hy3Layout.cpp @@ -526,15 +526,20 @@ void Hy3Layout::onWindowRemovedTiling(CWindow* window) { if (parent != nullptr) { parent->recalcSizePosRecursive(); + + if (parent->data.as_group.children.size() == 1 + && parent->data.as_group.children.front()->data.type == Hy3NodeData::Group) + { + auto* target_parent = parent; + while (target_parent != nullptr && swallowGroup(target_parent)) { + target_parent = target_parent->parent; + } + + if (target_parent != parent && target_parent != nullptr) + target_parent->recalcSizePosRecursive(); + } } - auto* target_parent = parent; - while (target_parent != nullptr && swallowGroup(target_parent)) { - target_parent = target_parent->parent; - } - - if (target_parent != parent && target_parent != nullptr) - target_parent->recalcSizePosRecursive(); } CWindow* Hy3Layout::getNextWindowCandidate(CWindow* window) {