diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp index 76109a42f..6b2d1b944 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 = std::nullopt; 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 272cefe5f..121de727a 100644 --- a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp +++ b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp @@ -46,10 +46,10 @@ namespace Desktop::Rule { std::optional pseudo; std::optional pin; std::optional noInitialFocus; + std::optional center; std::optional fullscreenStateClient; std::optional fullscreenStateInternal; - std::optional center; std::optional content; std::optional noCloseFor; diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp index 0eadc3262..bf853557a 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; }