From 34cd8b125ad9f03ababd7789ebe12eac69e23227 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 14 Oct 2022 20:46:32 +0100 Subject: rework focus system to be more safe and faster --- src/layout/DwindleLayout.cpp | 18 +++++++++--------- src/layout/IHyprLayout.cpp | 2 +- src/layout/MasterLayout.cpp | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src/layout') diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index df8b1616..e521a17d 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -69,7 +69,7 @@ SDwindleNodeData* SDwindleNodeData::getGroupVisible() { SDwindleNodeData* current = this->pNextGroupMember; while (current != this) { - if (!current->pWindow->m_bHidden) { + if (!current->pWindow->isHidden()) { return current; } @@ -83,11 +83,11 @@ void SDwindleNodeData::setGroupFocusedNode(SDwindleNodeData* pMember) { SDwindleNodeData* current = this->pNextGroupMember; while (current != this) { - current->pWindow->m_bHidden = current != pMember; + current->pWindow->setHidden(current != pMember); current = current->pNextGroupMember; } - this->pWindow->m_bHidden = pMember != this; + this->pWindow->setHidden(pMember != this); } int SDwindleNodeData::getGroupMemberCount() { @@ -301,7 +301,7 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) { OPENINGON = getFirstNodeOnWorkspace(PMONITOR->activeWorkspace); } else if (*PUSEACTIVE) { - if (g_pCompositor->windowValidMapped(g_pCompositor->m_pLastWindow) && !g_pCompositor->m_pLastWindow->m_bIsFloating && g_pCompositor->m_pLastWindow != pWindow && g_pCompositor->m_pLastWindow->m_iWorkspaceID == pWindow->m_iWorkspaceID && g_pCompositor->m_pLastWindow->m_bIsMapped) { + if (g_pCompositor->m_pLastWindow && !g_pCompositor->m_pLastWindow->m_bIsFloating && g_pCompositor->m_pLastWindow != pWindow && g_pCompositor->m_pLastWindow->m_iWorkspaceID == pWindow->m_iWorkspaceID && g_pCompositor->m_pLastWindow->m_bIsMapped) { OPENINGON = getNodeFromWindow(g_pCompositor->m_pLastWindow); } else { OPENINGON = getNodeFromWindow(g_pCompositor->vectorToWindowTiled(g_pInputManager->getMouseCoordsInternal())); @@ -491,7 +491,7 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) { } PNEXT->setGroupFocusedNode(PNEXT); - PNEXT->pWindow->m_bHidden = false; + PNEXT->pWindow->setHidden(false); m_lDwindleNodesData.remove(*PNODE); @@ -829,7 +829,7 @@ void CHyprDwindleLayout::toggleWindowGroup(CWindow* pWindow) { toAddWindows.push_back(PWINDOW); - PWINDOW->m_bHidden = false; + PWINDOW->setHidden(false); } if (PHEAD->pPreviousGroupMember) @@ -997,9 +997,9 @@ void CHyprDwindleLayout::switchGroupWindow(CWindow* pWindow, bool forward, CWind pNewNode->pWindow->m_bIsFloating = PNODE->pWindow->m_bIsFloating; if (PNODE->pWindow->m_bIsFullscreen) { - PNODE->pWindow->m_bHidden = false; + PNODE->pWindow->setHidden(false); g_pCompositor->setWindowFullscreen(PNODE->pWindow, false, PWORKSPACE->m_efFullscreenMode); - PNODE->pWindow->m_bHidden = true; + PNODE->pWindow->setHidden(true); g_pCompositor->setWindowFullscreen(pNewNode->pWindow, true, PWORKSPACE->m_efFullscreenMode); pNewNode->pWindow->m_vRealSize.warp(); @@ -1181,7 +1181,7 @@ std::string CHyprDwindleLayout::getLayoutName() { void CHyprDwindleLayout::onEnable() { for (auto& w : g_pCompositor->m_vWindows) { - if (w->m_bIsFloating || !w->m_bMappedX11 || !w->m_bIsMapped || w->m_bHidden) + if (w->m_bIsFloating || !w->m_bMappedX11 || !w->m_bIsMapped || w->isHidden()) continue; onWindowCreatedTiling(w.get()); diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp index c17c3123..24f066eb 100644 --- a/src/layout/IHyprLayout.cpp +++ b/src/layout/IHyprLayout.cpp @@ -47,7 +47,7 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) { pWindow->m_vRealSize = Vector2D(PWINDOWSURFACE->current.width, PWINDOWSURFACE->current.height); if ((desiredGeometry.width <= 1 || desiredGeometry.height <= 1) && pWindow->m_bIsX11 && pWindow->m_iX11Type == 2) { // XDG windows should be fine. TODO: check for weird atoms? - pWindow->m_bHidden = true; + pWindow->setHidden(true); return; } diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index a06fc147..d2577577 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -603,7 +603,7 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri void CHyprMasterLayout::onEnable() { for (auto& w : g_pCompositor->m_vWindows) { - if (w->m_bIsFloating || !w->m_bMappedX11 || !w->m_bIsMapped || w->m_bHidden) + if (w->m_bIsFloating || !w->m_bMappedX11 || !w->m_bIsMapped || w->isHidden()) continue; onWindowCreatedTiling(w.get()); -- cgit v1.2.3