diff options
| author | thejch <66577496+thejch@users.noreply.github.com> | 2024-03-30 17:49:53 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-31 00:49:53 +0000 |
| commit | 5e8c25d498ed5cb7852ae74a876b0c138a62d59d (patch) | |
| tree | 904e8d5f5c9fa10e540b02d229f0f3a83f3dfc0a /src/layout/DwindleLayout.cpp | |
| parent | 1aed45f61d2dd48943a63cabf7bd77c19a59cf62 (diff) | |
core: match all workspace rules instead of the first one only (#5340)
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index fe8847ed..93f60e3f 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -128,7 +128,7 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for const auto PWINDOW = pNode->pWindow; // get specific gaps and rules for this workspace, // if user specified them in config - const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(g_pCompositor->getWorkspaceByID(pNode->workspaceID)); + const auto WORKSPACERULES = g_pConfigManager->getWorkspaceRulesFor(g_pCompositor->getWorkspaceByID(pNode->workspaceID)); if (!g_pCompositor->windowExists(PWINDOW)) { Debug::log(ERR, "Node {} holding invalid {}!!", pNode, PWINDOW); @@ -147,10 +147,16 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for auto* const PGAPSIN = (CCssGapData*)(PGAPSINDATA.ptr())->getData(); auto* const PGAPSOUT = (CCssGapData*)(PGAPSOUTDATA.ptr())->getData(); - auto gapsIn = WORKSPACERULE.gapsIn.value_or(*PGAPSIN); - auto gapsOut = WORKSPACERULE.gapsOut.value_or(*PGAPSOUT); + auto gapsIn = *PGAPSIN; + auto gapsOut = *PGAPSOUT; + for (auto& wsRule : WORKSPACERULES) { + if (wsRule.gapsIn.has_value()) + gapsIn = wsRule.gapsIn.value(); + if (wsRule.gapsOut.has_value()) + gapsOut = wsRule.gapsOut.value(); + } - CBox nodeBox = pNode->box; + CBox nodeBox = pNode->box; nodeBox.round(); PWINDOW->m_vSize = nodeBox.size(); @@ -161,10 +167,17 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) && (NODESONWORKSPACE == 1 || (PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) { - PWINDOW->m_sSpecialRenderData.border = WORKSPACERULE.border.value_or(*PNOGAPSWHENONLY == 2); - PWINDOW->m_sSpecialRenderData.decorate = WORKSPACERULE.decorate.value_or(true); PWINDOW->m_sSpecialRenderData.rounding = false; PWINDOW->m_sSpecialRenderData.shadow = false; + PWINDOW->m_sSpecialRenderData.border = (*PNOGAPSWHENONLY == 2); + PWINDOW->m_sSpecialRenderData.decorate = true; + + for (auto& wsRule : WORKSPACERULES) { + if (wsRule.border.has_value()) + PWINDOW->m_sSpecialRenderData.border = wsRule.border.value(); + if (wsRule.decorate.has_value()) + PWINDOW->m_sSpecialRenderData.decorate = wsRule.decorate.value(); + } PWINDOW->updateWindowDecos(); |
