summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-10-13 14:16:48 +0200
committerGitHub <noreply@github.com>2025-10-13 13:16:48 +0100
commit4b55ec6830602c36fddcfbe40188a7fdc58a975e (patch)
tree4a6eaa2c76ac7ffbe3af2e88dab561895a98b4bf /src/config/ConfigManager.cpp
parent7fcaf332e8bacd62c04ba5805ea5d2ab91b38da4 (diff)
windowrules: add modal prop (#12024)
adds a modal prop for targeting modal windows with rules
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 7a58ffcf..7b24263a 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -1562,6 +1562,11 @@ std::vector<SP<CWindowRule>> CConfigManager::getMatchingRules(PHLWINDOW pWindow,
continue;
}
+ if (rule->m_modal != -1) {
+ if (rule->m_modal != pWindow->isModal())
+ continue;
+ }
+
if (!rule->m_fullscreenState.empty()) {
const auto ARGS = CVarList(rule->m_fullscreenState, 2, ' ');
//
@@ -2735,6 +2740,8 @@ std::optional<std::string> CConfigManager::handleWindowRule(const std::string& c
set |= (rule->m_focus = (v == "1"), true);
if (auto v = get("group"); !v.empty())
set |= (rule->m_group = (v == "1"), true);
+ if (auto v = get("modal"); !v.empty())
+ set |= (rule->m_modal = (v == "1"), true);
if (auto v = get("fullscreenstate"); !v.empty())
set |= (rule->m_fullscreenState = v, true);
@@ -2797,6 +2804,8 @@ std::optional<std::string> CConfigManager::handleWindowRule(const std::string& c
return false;
if (rule->m_group != -1 && rule->m_group != other->m_group)
return false;
+ if (rule->m_modal != -1 && rule->m_modal != other->m_modal)
+ return false;
return true;
});
} else {