layout: deny auto-grouping a new floating window into a tiled group (#8108)

This commit is contained in:
Aqa-Ib 2024-10-13 23:25:19 +00:00 committed by GitHub
parent abfd550ee2
commit e7fd0f5aec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -186,12 +186,17 @@ bool IHyprLayout::onWindowCreatedAutoGroup(PHLWINDOW pWindow) {
g_pCompositor->m_pLastWindow.lock() :
g_pCompositor->getFirstWindowOnWorkspace(pWindow->workspaceID());
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 XWayland windows that should be floated.
&& 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