From 49597688e975c23b4f3bb53e77617ed3cd1e4937 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 14 Nov 2023 15:46:57 +0000 Subject: [PATCH] windowrules: make idleinhibit dynamic --- src/Window.cpp | 14 ++++++++++++++ src/events/Windows.cpp | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Window.cpp b/src/Window.cpp index 770350a4..7569c869 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -591,6 +591,19 @@ void CWindow::applyDynamicRule(const SWindowRule& r) { try { m_sAdditionalConfigData.xray = configStringToInt(vars[1]); } catch (...) {} + } else if (r.szRule.starts_with("idleinhibit")) { + auto IDLERULE = r.szRule.substr(r.szRule.find_first_of(' ') + 1); + + if (IDLERULE == "none") + m_eIdleInhibitMode = IDLEINHIBIT_NONE; + else if (IDLERULE == "always") + m_eIdleInhibitMode = IDLEINHIBIT_ALWAYS; + else if (IDLERULE == "focus") + m_eIdleInhibitMode = IDLEINHIBIT_FOCUS; + else if (IDLERULE == "fullscreen") + m_eIdleInhibitMode = IDLEINHIBIT_FULLSCREEN; + else + Debug::log(ERR, "Rule idleinhibit: unknown mode {}", IDLERULE); } } @@ -615,6 +628,7 @@ void CWindow::updateDynamicRules() { m_sAdditionalConfigData.xray = -1; m_sAdditionalConfigData.forceTearing = false; m_sAdditionalConfigData.nearestNeighbor = false; + m_eIdleInhibitMode = IDLEINHIBIT_NONE; const auto WINDOWRULES = g_pConfigManager->getMatchingRules(this); for (auto& r : WINDOWRULES) { diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 1d5384b7..39678154 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -246,20 +246,6 @@ void Events::listener_mapWindow(void* owner, void* data) { } vPrev = v; } - } else if (r.szRule.starts_with("idleinhibit")) { - auto IDLERULE = r.szRule.substr(r.szRule.find_first_of(' ') + 1); - - if (IDLERULE == "none") { - PWINDOW->m_eIdleInhibitMode = IDLEINHIBIT_NONE; - } else if (IDLERULE == "always") { - PWINDOW->m_eIdleInhibitMode = IDLEINHIBIT_ALWAYS; - } else if (IDLERULE == "focus") { - PWINDOW->m_eIdleInhibitMode = IDLEINHIBIT_FOCUS; - } else if (IDLERULE == "fullscreen") { - PWINDOW->m_eIdleInhibitMode = IDLEINHIBIT_FULLSCREEN; - } else { - Debug::log(ERR, "Rule idleinhibit: unknown mode {}", IDLERULE); - } } PWINDOW->applyDynamicRule(r); }