summaryrefslogtreecommitdiff
path: root/src/layout/DwindleLayout.cpp
diff options
context:
space:
mode:
authorthejch <66577496+thejch@users.noreply.github.com>2024-04-05 08:54:30 -0700
committerGitHub <noreply@github.com>2024-04-05 16:54:30 +0100
commit1e8f57c7340850ff08e4a4919e06d830be28b7b9 (patch)
treef4abda938c24531e7234efd4375ae6e31ae435a5 /src/layout/DwindleLayout.cpp
parent942172d2dc9194b95d637283ec3338c06c9c6597 (diff)
workspacerules: fix workspace rule loops (#5433)
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
-rw-r--r--src/layout/DwindleLayout.cpp26
1 files changed, 6 insertions, 20 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index 67390010..ea078349 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 WORKSPACERULES = g_pConfigManager->getWorkspaceRulesFor(g_pCompositor->getWorkspaceByID(pNode->workspaceID));
+ const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(g_pCompositor->getWorkspaceByID(pNode->workspaceID));
if (!g_pCompositor->windowExists(PWINDOW)) {
Debug::log(ERR, "Node {} holding invalid {}!!", pNode, PWINDOW);
@@ -147,16 +147,9 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
auto* const PGAPSIN = (CCssGapData*)(PGAPSINDATA.ptr())->getData();
auto* const PGAPSOUT = (CCssGapData*)(PGAPSOUTDATA.ptr())->getData();
- 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;
+ auto gapsIn = WORKSPACERULE.gapsIn.value_or(*PGAPSIN);
+ auto gapsOut = WORKSPACERULE.gapsOut.value_or(*PGAPSOUT);
+ CBox nodeBox = pNode->box;
nodeBox.round();
PWINDOW->m_vSize = nodeBox.size();
@@ -167,17 +160,10 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
if (*PNOGAPSWHENONLY && !PWINDOW->onSpecialWorkspace() &&
(NODESONWORKSPACE == 1 || (PWINDOW->m_bIsFullscreen && PWINDOW->m_pWorkspace->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();