diff options
| author | Vaxry <vaxry@vaxry.net> | 2026-04-04 23:20:32 +0100 |
|---|---|---|
| committer | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2026-04-04 19:00:34 -0400 |
| commit | 3c88ac8ead1fec0fb76cf8a48da0b8e1afe864df (patch) | |
| tree | 5903209b2aa6409ef944965a39efada1b6ef840c /src/desktop/view/Window.cpp | |
| parent | 5bf2bbeda94feefab5708bf669130e24d20be4e3 (diff) | |
desktop/window: optimize getRealBorderSize()
Diffstat (limited to 'src/desktop/view/Window.cpp')
| -rw-r--r-- | src/desktop/view/Window.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp index e9f22021..4506d5fb 100644 --- a/src/desktop/view/Window.cpp +++ b/src/desktop/view/Window.cpp @@ -830,15 +830,25 @@ void CWindow::updateWindowData(const Config::CWorkspaceRule& workspaceRule) { m_ruleApplicator->rounding().matchOptional(workspaceRule.m_noRounding.value_or(false) ? std::optional<Hyprlang::INT>(0) : std::nullopt, Desktop::Types::PRIORITY_WORKSPACE_RULE); m_ruleApplicator->noShadow().matchOptional(workspaceRule.m_noShadow, Desktop::Types::PRIORITY_WORKSPACE_RULE); + + m_borderSizeCacheDirty = true; } int CWindow::getRealBorderSize() const { - if ((m_workspace && isEffectiveInternalFSMode(FSMODE_FULLSCREEN)) || !m_ruleApplicator->decorate().valueOrDefault()) + if (!m_borderSizeCacheDirty) + return m_cachedBorderSize; + + if ((m_workspace && isEffectiveInternalFSMode(FSMODE_FULLSCREEN)) || !m_ruleApplicator->decorate().valueOrDefault()) { + m_cachedBorderSize = 0; + m_borderSizeCacheDirty = false; return 0; + } static auto PBORDERSIZE = CConfigValue<Hyprlang::INT>("general:border_size"); - return m_ruleApplicator->borderSize().valueOr(*PBORDERSIZE); + m_cachedBorderSize = m_ruleApplicator->borderSize().valueOr(*PBORDERSIZE); + m_borderSizeCacheDirty = false; + return m_cachedBorderSize; } float CWindow::getScrollMouse() { @@ -1533,6 +1543,8 @@ Vector2D CWindow::getReportedSize() { } void CWindow::updateDecorationValues() { + m_borderSizeCacheDirty = true; + static auto PACTIVECOL = CConfigValue<Hyprlang::CUSTOMTYPE>("general:col.active_border"); static auto PINACTIVECOL = CConfigValue<Hyprlang::CUSTOMTYPE>("general:col.inactive_border"); static auto PNOGROUPACTIVECOL = CConfigValue<Hyprlang::CUSTOMTYPE>("general:col.nogroup_border_active"); |
