summaryrefslogtreecommitdiff
path: root/src/desktop
diff options
context:
space:
mode:
authorItsOhen <TNordfeldt@gmail.com>2026-03-17 17:43:53 +0100
committerGitHub <noreply@github.com>2026-03-17 12:43:53 -0400
commit9f599e316504943eec5d2fa854f7c99c575616b7 (patch)
tree58041f7feb19ca8e022ae3639524b7c51ef05427 /src/desktop
parent35ef8dc1f7abb3e7139de5f8831ca2b0d81da78c (diff)
window/rules: add scrolling_width (#13754)
Diffstat (limited to 'src/desktop')
-rw-r--r--src/desktop/rule/windowRule/WindowRuleApplicator.cpp6
-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.hpp3
-rw-r--r--src/desktop/view/Window.cpp4
5 files changed, 13 insertions, 4 deletions
diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
index dd0e7fb8..bb2499e7 100644
--- a/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
+++ b/src/desktop/rule/windowRule/WindowRuleApplicator.cpp
@@ -541,6 +541,12 @@ CWindowRuleApplicator::SRuleResult CWindowRuleApplicator::applyStaticRule(const
} catch (...) { Log::logger->log(Log::ERR, "CWindowRuleApplicator::applyStaticRule: invalid no close for {}", effect); }
break;
}
+ case WINDOW_RULE_EFFECT_SCROLLING_WIDTH: {
+ try {
+ static_.scrollingWidth = std::stof(effect);
+ } catch (...) { Log::logger->log(Log::ERR, "CWindowRuleApplicator::applyStaticRule: invalid scrolling width {}", effect); }
+ break;
+ }
}
}
diff --git a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
index 8bcf7008..e7cf15f9 100644
--- a/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
+++ b/src/desktop/rule/windowRule/WindowRuleApplicator.hpp
@@ -54,6 +54,7 @@ namespace Desktop::Rule {
std::optional<int> noCloseFor;
std::string size, position;
+ std::optional<float> scrollingWidth;
std::vector<std::string> suppressEvent;
} static_;
diff --git a/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp b/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
index 660bf871..66867247 100644
--- a/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
+++ b/src/desktop/rule/windowRule/WindowRuleEffectContainer.cpp
@@ -28,6 +28,7 @@ static const std::vector<std::string> EFFECT_STRINGS = {
"suppress_event", //
"content", //
"no_close_for", //
+ "scrolling_width", //
"rounding", //
"rounding_power", //
"persistent_size", //
@@ -69,7 +70,7 @@ static const std::vector<std::string> EFFECT_STRINGS = {
// This is here so that if we change the rules, we get reminded to update
// the strings.
-static_assert(WINDOW_RULE_EFFECT_LAST_STATIC == 54);
+static_assert(WINDOW_RULE_EFFECT_LAST_STATIC == 55);
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 0827d462..af861109 100644
--- a/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
+++ b/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
@@ -27,6 +27,7 @@ namespace Desktop::Rule {
WINDOW_RULE_EFFECT_SUPPRESSEVENT,
WINDOW_RULE_EFFECT_CONTENT,
WINDOW_RULE_EFFECT_NOCLOSEFOR,
+ WINDOW_RULE_EFFECT_SCROLLING_WIDTH,
// dynamic
WINDOW_RULE_EFFECT_ROUNDING,
@@ -76,4 +77,4 @@ namespace Desktop::Rule {
};
SP<CWindowRuleEffectContainer> windowEffects();
-}; \ No newline at end of file
+};
diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp
index 00d32a47..2f87cc0f 100644
--- a/src/desktop/view/Window.cpp
+++ b/src/desktop/view/Window.cpp
@@ -1770,8 +1770,8 @@ void CWindow::mapWindow() {
if (m_ruleApplicator->static_.fullscreenStateClient || m_ruleApplicator->static_.fullscreenStateInternal) {
requestedFSState = Desktop::View::SFullscreenState{
- .internal = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateInternal.value_or(0)),
- .client = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateClient.value_or(0)),
+ .internal = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateInternal.value_or(0)),
+ .client = sc<eFullscreenMode>(m_ruleApplicator->static_.fullscreenStateClient.value_or(0)),
};
}