From 1e8f57c7340850ff08e4a4919e06d830be28b7b9 Mon Sep 17 00:00:00 2001 From: thejch <66577496+thejch@users.noreply.github.com> Date: Fri, 5 Apr 2024 08:54:30 -0700 Subject: workspacerules: fix workspace rule loops (#5433) --- src/desktop/Window.cpp | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'src/desktop/Window.cpp') diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index ed550655..75f1f4a9 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -1088,33 +1088,20 @@ float CWindow::rounding() { } void CWindow::updateSpecialRenderData() { - const auto PWORKSPACE = m_pWorkspace; - const auto WORKSPACERULES = PWORKSPACE ? g_pConfigManager->getWorkspaceRulesFor(PWORKSPACE) : std::vector{}; - bool border = true; + const auto PWORKSPACE = m_pWorkspace; + const auto WORKSPACERULE = PWORKSPACE ? g_pConfigManager->getWorkspaceRuleFor(PWORKSPACE) : SWorkspaceRule{}; + bool border = true; static auto PNOBORDERONFLOATING = CConfigValue("general:no_border_on_floating"); if (m_bIsFloating && *PNOBORDERONFLOATING == 1) border = false; - m_sSpecialRenderData.border = border; - m_sSpecialRenderData.borderSize = -1; - m_sSpecialRenderData.decorate = true; - m_sSpecialRenderData.rounding = true; - m_sSpecialRenderData.shadow = true; - - for (auto& wsRule : WORKSPACERULES) { - if (wsRule.border.has_value()) - m_sSpecialRenderData.border = wsRule.border.value(); - if (wsRule.borderSize.has_value()) - m_sSpecialRenderData.borderSize = wsRule.borderSize.value(); - if (wsRule.decorate.has_value()) - m_sSpecialRenderData.decorate = wsRule.decorate.value(); - if (wsRule.rounding.has_value()) - m_sSpecialRenderData.rounding = wsRule.rounding.value(); - if (wsRule.shadow.has_value()) - m_sSpecialRenderData.shadow = wsRule.shadow.value(); - } + m_sSpecialRenderData.border = WORKSPACERULE.border.value_or(border); + m_sSpecialRenderData.borderSize = WORKSPACERULE.borderSize.value_or(-1); + m_sSpecialRenderData.decorate = WORKSPACERULE.decorate.value_or(true); + m_sSpecialRenderData.rounding = WORKSPACERULE.rounding.value_or(true); + m_sSpecialRenderData.shadow = WORKSPACERULE.shadow.value_or(true); } int CWindow::getRealBorderSize() { -- cgit v1.2.3