summaryrefslogtreecommitdiff
path: root/src/desktop/view/Window.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2026-04-04 23:20:32 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-04 19:00:34 -0400
commit3c88ac8ead1fec0fb76cf8a48da0b8e1afe864df (patch)
tree5903209b2aa6409ef944965a39efada1b6ef840c /src/desktop/view/Window.cpp
parent5bf2bbeda94feefab5708bf669130e24d20be4e3 (diff)
desktop/window: optimize getRealBorderSize()
Diffstat (limited to 'src/desktop/view/Window.cpp')
-rw-r--r--src/desktop/view/Window.cpp16
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");