aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/layout/IHyprLayout.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index 24ee13f4..80c9abff 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -186,12 +186,17 @@ bool IHyprLayout::onWindowCreatedAutoGroup(PHLWINDOW pWindow) {
g_pCompositor->m_pLastWindow.lock() :
g_pCompositor->getFirstWindowOnWorkspace(pWindow->workspaceID());
- if (*PAUTOGROUP // check if auto_group is enabled.
- && OPENINGON // check if OPENINGON exists.
- && OPENINGON != pWindow // fixes a freeze when activating togglefloat to transform a floating group into a tiled group.
- && OPENINGON->m_sGroupData.pNextWindow.lock() // check if OPENINGON is a group
- && pWindow->canBeGroupedInto(OPENINGON) // check if the new window can be grouped into OPENINGON
- && !g_pXWaylandManager->shouldBeFloated(pWindow)) { // don't group XWayland windows that should be floated.
+ bool denied = false;
+ if (pWindow->m_bIsFloating && !OPENINGON->m_bIsFloating)
+ denied = true;
+
+ if (*PAUTOGROUP // check if auto_group is enabled.
+ && OPENINGON // check if OPENINGON exists.
+ && OPENINGON != pWindow // fixes a freeze when activating togglefloat to transform a floating group into a tiled group.
+ && OPENINGON->m_sGroupData.pNextWindow.lock() // check if OPENINGON is a group.
+ && pWindow->canBeGroupedInto(OPENINGON) // check if the new window can be grouped into OPENINGON.
+ && !g_pXWaylandManager->shouldBeFloated(pWindow) // don't group a new window that should be floated.
+ && !denied) { // don't group a new floated window into a tiled group.
pWindow->m_bIsFloating = OPENINGON->m_bIsFloating; // match the floating state