From a4e33a2ae31a536db5587ded442802b7e2148172 Mon Sep 17 00:00:00 2001 From: lichie Date: Wed, 10 Dec 2025 04:12:18 -0800 Subject: [PATCH 1/3] force center and move rules to override each other --- src/desktop/rule/windowRule/WindowRuleApplicator.cpp | 2 ++ src/desktop/rule/windowRule/WindowRuleApplicator.hpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp index 76109a42ff8..9475607a3b4 100644 --- a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp +++ b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp @@ -481,6 +481,7 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyStaticRule(const break; } case WINDOW_RULE_EFFECT_MOVE: { + static_.center = false; static_.position = effect; break; } @@ -489,6 +490,7 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyStaticRule(const break; } case WINDOW_RULE_EFFECT_CENTER: { + static_.position.clear(); static_.center = truthy(effect); break; } diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp index ba80e17b522..f3c0694d2c1 100644 --- a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp +++ b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp @@ -47,10 +47,10 @@ namespace Desktop::Rule { bool pseudo = false; bool pin = false; bool noInitialFocus = false; + bool center = false; std::optional fullscreenStateClient; std::optional fullscreenStateInternal; - std::optional center; std::optional content; std::optional noCloseFor; From ece1733199f8ed301f0d55d2db3bdbbd4766432c Mon Sep 17 00:00:00 2001 From: lichie Date: Sun, 14 Dec 2025 18:18:49 -0800 Subject: [PATCH 2/3] clangd format --- src/desktop/rule/windowRule/WindowRuleApplicator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp index 9475607a3b4..f40e4e9088d 100644 --- a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp +++ b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp @@ -481,7 +481,7 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyStaticRule(const break; } case WINDOW_RULE_EFFECT_MOVE: { - static_.center = false; + static_.center = false; static_.position = effect; break; } From 8e7816160c9bbf2aaa6d43c9bab4eaf8f240a8d6 Mon Sep 17 00:00:00 2001 From: lichie Date: Mon, 15 Dec 2025 20:53:33 -0800 Subject: [PATCH 3/3] use nullopt --- src/desktop/rule/windowRule/WindowRuleApplicator.cpp | 2 +- src/desktop/view/Window.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp index f40e4e9088d..6b2d1b94458 100644 --- a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp +++ b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp @@ -481,7 +481,7 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyStaticRule(const break; } case WINDOW_RULE_EFFECT_MOVE: { - static_.center = false; + static_.center = std::nullopt; static_.position = effect; break; } diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp index 0eadc3262df..bf853557a30 100644 --- a/src/desktop/view/Window.cpp +++ b/src/desktop/view/Window.cpp @@ -2248,7 +2248,7 @@ void CWindow::mapWindow() { } } - if (m_ruleApplicator->static_.center) { + if (m_ruleApplicator->static_.center.value_or(false)) { const auto WORKAREA = PMONITOR->logicalBoxMinusReserved(); *m_realPosition = WORKAREA.middle() - m_realSize->goal() / 2.f; }