summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornyx <nnyyxxxx@protonmail.com>2025-03-08 08:20:27 -0500
committerGitHub <noreply@github.com>2025-03-08 14:20:27 +0100
commitc544c5115c8d35a2212b3dcb93ae90cf8a9f8f0c (patch)
tree166dfa8c4053549c909e015e02e9e32c9d88c25b /src
parentb80b64cd6c913f8c8ac820a1e4ca615a62ff958f (diff)
windowrules: store floating size on close instead of resize (#9569)
Diffstat (limited to 'src')
-rw-r--r--src/desktop/Window.cpp5
-rw-r--r--src/events/Windows.cpp7
2 files changed, 7 insertions, 5 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp
index b7a3f8f6..7f6ae45d 100644
--- a/src/desktop/Window.cpp
+++ b/src/desktop/Window.cpp
@@ -1327,11 +1327,6 @@ void CWindow::clampWindowSize(const std::optional<Vector2D> 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() {
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 399894f9..86e13d8e 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -716,6 +716,13 @@ void Events::listener_unmapWindow(void* owner, void* data) {
g_pEventManager->postEvent(SHyprIPCEvent{"closewindow", std::format("{:x}", PWINDOW)});
EMIT_HOOK_EVENT("closeWindow", PWINDOW);
+ if (PWINDOW->m_bIsFloating && !PWINDOW->m_bIsX11 &&
+ std::any_of(PWINDOW->m_vMatchedRules.begin(), PWINDOW->m_vMatchedRules.end(), [](const auto& r) { return r->ruleType == CWindowRule::RULE_PERSISTENTSIZE; })) {
+ Debug::log(LOG, "storing floating size {}x{} for window {}::{} on close", PWINDOW->m_vRealSize->value().x, PWINDOW->m_vRealSize->value().y, PWINDOW->m_szClass,
+ PWINDOW->m_szTitle);
+ g_pConfigManager->storeFloatingSize(PWINDOW, PWINDOW->m_vRealSize->value());
+ }
+
PROTO::toplevelExport->onWindowUnmap(PWINDOW);
if (PWINDOW->isFullscreen())