summaryrefslogtreecommitdiff
path: root/src/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'src/desktop')
-rw-r--r--src/desktop/rule/windowRule/WindowRuleApplicator.cpp11
-rw-r--r--src/desktop/rule/windowRule/WindowRuleApplicator.hpp1
-rw-r--r--src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp3
-rw-r--r--src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp1
4 files changed, 12 insertions, 4 deletions
diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
index c19c6338..b3349bd6 100644
--- a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
+++ b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
@@ -52,9 +52,9 @@ std::unordered_set<CWindowRuleEffectContainer::storageType> CWindowRuleApplicato
std::pair{std::ref(m_noFollowMouse), [this] { return noFollowMouseEffect(); }}, std::pair{std::ref(m_noScreenShare), [this] { return noScreenShareEffect(); }},
std::pair{std::ref(m_noVRR), [this] { return noVRREffect(); }}, std::pair{std::ref(m_persistentSize), [this] { return persistentSizeEffect(); }},
std::pair{std::ref(m_stayFocused), [this] { return stayFocusedEffect(); }}, std::pair{std::ref(m_idleInhibitMode), [this] { return idleInhibitModeEffect(); }},
- std::pair{std::ref(m_borderSize), [this] { return borderSizeEffect(); }}, std::pair{std::ref(m_rounding), [this] { return roundingEffect(); }},
- std::pair{std::ref(m_roundingPower), [this] { return roundingPowerEffect(); }}, std::pair{std::ref(m_scrollMouse), [this] { return scrollMouseEffect(); }},
- std::pair{std::ref(m_scrollTouchpad), [this] { return scrollTouchpadEffect(); }},
+ std::pair{std::ref(m_confinePointer), [this] { return confinePointerEffect(); }}, std::pair{std::ref(m_borderSize), [this] { return borderSizeEffect(); }},
+ std::pair{std::ref(m_rounding), [this] { return roundingEffect(); }}, std::pair{std::ref(m_roundingPower), [this] { return roundingPowerEffect(); }},
+ std::pair{std::ref(m_scrollMouse), [this] { return scrollMouseEffect(); }}, std::pair{std::ref(m_scrollTouchpad), [this] { return scrollTouchpadEffect(); }},
std::pair{std::ref(m_animationStyle), [this] { return animationStyleEffect(); }}, std::pair{std::ref(m_maxSize), [this] { return maxSizeEffect(); }},
std::pair{std::ref(m_minSize), [this] { return minSizeEffect(); }}, std::pair{std::ref(m_activeBorderColor), [this] { return activeBorderColorEffect(); }},
std::pair{std::ref(m_inactiveBorderColor), [this] { return inactiveBorderColorEffect(); }}));
@@ -342,6 +342,11 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyDynamicRule(const
m_stayFocused.second |= rule->getPropertiesMask();
break;
}
+ case WINDOW_RULE_EFFECT_CONFINE_POINTER: {
+ m_confinePointer.first.set(truthy(effect), Types::PRIORITY_WINDOW_RULE);
+ m_confinePointer.second |= rule->getPropertiesMask();
+ break;
+ }
case WINDOW_RULE_EFFECT_SCROLL_MOUSE: {
m_scrollMouse.first.set(std::get<float>(value), Types::PRIORITY_WINDOW_RULE);
m_scrollMouse.second |= rule->getPropertiesMask();
diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
index f5e43609..2c382da8 100644
--- a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
+++ b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
@@ -116,6 +116,7 @@ namespace Desktop::Rule {
DEFINE_PROP(bool, noVRR, false, WINDOW_RULE_EFFECT_NO_VRR)
DEFINE_PROP(bool, persistentSize, false, WINDOW_RULE_EFFECT_PERSISTENT_SIZE)
DEFINE_PROP(bool, stayFocused, false, WINDOW_RULE_EFFECT_STAY_FOCUSED)
+ DEFINE_PROP(bool, confinePointer, false, WINDOW_RULE_EFFECT_CONFINE_POINTER)
DEFINE_PROP(int, idleInhibitMode, false, WINDOW_RULE_EFFECT_IDLE_INHIBIT)
diff --git a/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp b/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
index 66867247..3b624c03 100644
--- a/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
+++ b/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
@@ -65,12 +65,13 @@ static const std::vector<std::string> EFFECT_STRINGS = {
"scroll_mouse", //
"scroll_touchpad", //
"stay_focused", //
+ "confine_pointer", //
"__internal_last_static", //
};
// This is here so that if we change the rules, we get reminded to update
// the strings.
-static_assert(WINDOW_RULE_EFFECT_LAST_STATIC == 55);
+static_assert(WINDOW_RULE_EFFECT_LAST_STATIC == 56);
CWindowRuleEffectContainer::CWindowRuleEffectContainer() : IEffectContainer<eWindowRuleEffect>(std::vector<std::string>{EFFECT_STRINGS}) {
;
diff --git a/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp b/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
index af861109..b482c18e 100644
--- a/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
+++ b/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
@@ -66,6 +66,7 @@ namespace Desktop::Rule {
WINDOW_RULE_EFFECT_SCROLL_MOUSE,
WINDOW_RULE_EFFECT_SCROLL_TOUCHPAD,
WINDOW_RULE_EFFECT_STAY_FOCUSED,
+ WINDOW_RULE_EFFECT_CONFINE_POINTER,
WINDOW_RULE_EFFECT_LAST_STATIC,
};