summaryrefslogtreecommitdiff
path: root/src/desktop/view/Window.cpp
diff options
context:
space:
mode:
authorItsOhen <TNordfeldt@gmail.com>2026-03-15 20:32:05 +0100
committerGitHub <noreply@github.com>2026-03-15 14:32:05 -0500
commit94bd4123c6e8fd3162e245b0d568c9d6dfd75780 (patch)
tree764d69857d566a44939394960b05731c709ae973 /src/desktop/view/Window.cpp
parent3fd2a95475d9a954305eeede59fe2b345a4d8098 (diff)
desktop/rules: fix static rules and content type. (#13725)
Hopefully for the last time in a while. Also a lot easier to add in new static types with the recheck done in window map instead of the rule.
Diffstat (limited to 'src/desktop/view/Window.cpp')
-rw-r--r--src/desktop/view/Window.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp
index 4570a901..00d32a47 100644
--- a/src/desktop/view/Window.cpp
+++ b/src/desktop/view/Window.cpp
@@ -1719,8 +1719,7 @@ void CWindow::mapWindow() {
requestedClientFSMode = FSMODE_FULLSCREEN;
MONITORID requestedFSMonitor = m_wantsInitialFullscreenMonitor;
- m_ruleApplicator->readStaticRules();
- {
+ auto setStaticProps = [&]() {
if (!m_ruleApplicator->static_.monitor.empty()) {
const auto& MONITORSTR = m_ruleApplicator->static_.monitor;
if (MONITORSTR == "unset")
@@ -1771,8 +1770,8 @@ void CWindow::mapWindow() {
if (m_ruleApplicator->static_.fullscreenStateClient || m_ruleApplicator->static_.fullscreenStateInternal) {
requestedFSState = Desktop::View::SFullscreenState{
- .internal = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateInternal.value_or(0)),
- .client = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateClient.value_or(0)),
+ .internal = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateInternal.value_or(0)),
+ .client = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateClient.value_or(0)),
};
}
@@ -1846,6 +1845,13 @@ void CWindow::mapWindow() {
if (m_ruleApplicator->static_.noCloseFor)
m_closeableSince = Time::steadyNow() + std::chrono::milliseconds(m_ruleApplicator->static_.noCloseFor.value());
+ };
+
+ const bool recheck = m_ruleApplicator->readStaticRules();
+ setStaticProps();
+ if (recheck) {
+ m_ruleApplicator->recheckStaticRules();
+ setStaticProps();
}
// make it uncloseable if it's a Hyprland dialog