From b80b64cd6c913f8c8ac820a1e4ca615a62ff958f Mon Sep 17 00:00:00 2001 From: nyx Date: Fri, 7 Mar 2025 20:12:02 -0500 Subject: windowrules: add option to allow size persistence between app launches (#9422) --- src/desktop/Window.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/desktop/Window.cpp') diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index ceb5eb18..b7a3f8f6 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -791,6 +791,10 @@ void CWindow::applyDynamicRule(const SP& r) { } break; } + case CWindowRule::RULE_PERSISTENTSIZE: { + m_sWindowData.persistentSize = CWindowOverridableVar(true, PRIORITY_WINDOW_RULE); + break; + } default: break; } } @@ -1323,6 +1327,11 @@ void CWindow::clampWindowSize(const std::optional minSize, const std:: *m_vRealPosition = m_vRealPosition->goal() + DELTA / 2.0; *m_vRealSize = NEWSIZE; + + if (m_bIsFloating && !m_bIsX11 && std::any_of(m_vMatchedRules.begin(), m_vMatchedRules.end(), [](const auto& r) { return r->ruleType == CWindowRule::RULE_PERSISTENTSIZE; })) { + Debug::log(LOG, "clamped window {}::{} to {}x{} (persistentsize)", m_szClass, m_szTitle, m_vRealSize->value().x, m_vRealSize->value().y); + g_pConfigManager->storeFloatingSize(m_pSelf.lock(), m_vRealSize->value()); + } } bool CWindow::isFullscreen() { -- cgit v1.2.3