diff options
| author | thejch <66577496+thejch@users.noreply.github.com> | 2024-04-05 08:54:30 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-05 16:54:30 +0100 |
| commit | 1e8f57c7340850ff08e4a4919e06d830be28b7b9 (patch) | |
| tree | f4abda938c24531e7234efd4375ae6e31ae435a5 /src/desktop/Window.cpp | |
| parent | 942172d2dc9194b95d637283ec3338c06c9c6597 (diff) | |
workspacerules: fix workspace rule loops (#5433)
Diffstat (limited to 'src/desktop/Window.cpp')
| -rw-r--r-- | src/desktop/Window.cpp | 29 |
1 files changed, 8 insertions, 21 deletions
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<SWorkspaceRule>{}; - bool border = true; + const auto PWORKSPACE = m_pWorkspace; + const auto WORKSPACERULE = PWORKSPACE ? g_pConfigManager->getWorkspaceRuleFor(PWORKSPACE) : SWorkspaceRule{}; + bool border = true; static auto PNOBORDERONFLOATING = CConfigValue<Hyprlang::INT>("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() { |
