desktop/windowRules: fix disabling binary window rules with override (#12635)

This commit is contained in:
Lichie 2025-12-15 14:19:13 -08:00 committed by GitHub
parent 6b491e4d6b
commit 6e09eb2e6c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 19 deletions

View file

@ -41,12 +41,11 @@ namespace Desktop::Rule {
std::string monitor, workspace, group; std::string monitor, workspace, group;
std::optional<bool> floating; std::optional<bool> floating;
std::optional<bool> fullscreen;
bool fullscreen = false; std::optional<bool> maximize;
bool maximize = false; std::optional<bool> pseudo;
bool pseudo = false; std::optional<bool> pin;
bool pin = false; std::optional<bool> noInitialFocus;
bool noInitialFocus = false;
std::optional<int> fullscreenStateClient; std::optional<int> fullscreenStateClient;
std::optional<int> fullscreenStateInternal; std::optional<int> fullscreenStateInternal;

View file

@ -2047,14 +2047,10 @@ void CWindow::mapWindow() {
requestedFSMonitor = MONITOR_INVALID; requestedFSMonitor = MONITOR_INVALID;
} }
if (m_ruleApplicator->static_.floating.has_value()) m_isFloating = m_ruleApplicator->static_.floating.value_or(m_isFloating);
m_isFloating = m_ruleApplicator->static_.floating.value(); m_isPseudotiled = m_ruleApplicator->static_.pseudo.value_or(m_isPseudotiled);
m_noInitialFocus = m_ruleApplicator->static_.noInitialFocus.value_or(m_noInitialFocus);
if (m_ruleApplicator->static_.pseudo) m_pinned = m_ruleApplicator->static_.pin.value_or(m_pinned);
m_isPseudotiled = true;
if (m_ruleApplicator->static_.noInitialFocus)
m_noInitialFocus = true;
if (m_ruleApplicator->static_.fullscreenStateClient || m_ruleApplicator->static_.fullscreenStateInternal) { if (m_ruleApplicator->static_.fullscreenStateClient || m_ruleApplicator->static_.fullscreenStateInternal) {
requestedFSState = Desktop::View::SFullscreenState{ requestedFSState = Desktop::View::SFullscreenState{
@ -2080,13 +2076,10 @@ void CWindow::mapWindow() {
} }
} }
if (m_ruleApplicator->static_.pin) if (m_ruleApplicator->static_.fullscreen.value_or(false))
m_pinned = true;
if (m_ruleApplicator->static_.fullscreen)
requestedInternalFSMode = FSMODE_FULLSCREEN; requestedInternalFSMode = FSMODE_FULLSCREEN;
if (m_ruleApplicator->static_.maximize) if (m_ruleApplicator->static_.maximize.value_or(false))
requestedInternalFSMode = FSMODE_MAXIMIZED; requestedInternalFSMode = FSMODE_MAXIMIZED;
if (!m_ruleApplicator->static_.group.empty()) { if (!m_ruleApplicator->static_.group.empty()) {