summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
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/events/Windows.cpp
parentb80b64cd6c913f8c8ac820a1e4ca615a62ff958f (diff)
windowrules: store floating size on close instead of resize (#9569)
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp7
1 files changed, 7 insertions, 0 deletions
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())