summaryrefslogtreecommitdiff
path: root/src/managers
diff options
context:
space:
mode:
authorMightyPlaza <123664421+MightyPlaza@users.noreply.github.com>2025-04-15 23:00:40 +0000
committerGitHub <noreply@github.com>2025-04-16 01:00:40 +0200
commitffd6cf65e40a7140e82dc6e076c90b5119d41a54 (patch)
tree0ccf8c15626b26d1eef39d880fd0a10533bdb489 /src/managers
parent8b7b169043de2a9d95f8505edb8b6576fac586fd (diff)
windowrules: allow incrementing window props (#9566)
Diffstat (limited to 'src/managers')
-rw-r--r--src/managers/CursorManager.cpp1
-rw-r--r--src/managers/KeybindManager.cpp15
-rw-r--r--src/managers/PointerManager.cpp1
-rw-r--r--src/managers/XWaylandManager.cpp1
-rw-r--r--src/managers/input/InputManager.cpp1
-rw-r--r--src/managers/input/Touch.cpp1
6 files changed, 16 insertions, 4 deletions
diff --git a/src/managers/CursorManager.cpp b/src/managers/CursorManager.cpp
index ee0cff35..1535734b 100644
--- a/src/managers/CursorManager.cpp
+++ b/src/managers/CursorManager.cpp
@@ -4,6 +4,7 @@
#include "PointerManager.hpp"
#include "../xwayland/XWayland.hpp"
#include "../managers/HookSystemManager.hpp"
+#include "../helpers/Monitor.hpp"
static int cursorAnimTimer(SP<CEventLoopTimer> self, void* data) {
const auto cursorMgr = reinterpret_cast<CCursorManager*>(data);
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 2644cf53..4ef7d229 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -18,6 +18,7 @@
#include "../managers/EventManager.hpp"
#include "../render/Renderer.hpp"
#include "../hyprerror/HyprError.hpp"
+#include "../config/ConfigManager.hpp"
#include <optional>
#include <iterator>
@@ -3221,7 +3222,7 @@ SDispatchResult CKeybindManager::setProp(std::string args) {
} else if (auto search = NWindowProperties::boolWindowProperties.find(PROP); search != NWindowProperties::boolWindowProperties.end()) {
auto pWindowDataElement = search->second(PWINDOW);
if (VAL == "toggle")
- *pWindowDataElement = CWindowOverridableVar(!pWindowDataElement->valueOrDefault(), PRIORITY_SET_PROP);
+ pWindowDataElement->increment(true, PRIORITY_SET_PROP);
else if (VAL == "unset")
pWindowDataElement->unset(PRIORITY_SET_PROP);
else
@@ -3229,12 +3230,18 @@ SDispatchResult CKeybindManager::setProp(std::string args) {
} else if (auto search = NWindowProperties::intWindowProperties.find(PROP); search != NWindowProperties::intWindowProperties.end()) {
if (VAL == "unset")
search->second(PWINDOW)->unset(PRIORITY_SET_PROP);
- else if (const auto V = configStringToInt(VAL); V)
- *(search->second(PWINDOW)) = CWindowOverridableVar((int)*V, PRIORITY_SET_PROP);
+ else if (VAL.starts_with("relative")) {
+ const Hyprlang::INT V = std::stoi(VAL.substr(VAL.find(' ')));
+ search->second(PWINDOW)->increment(V, PRIORITY_SET_PROP);
+ } else if (const auto V = configStringToInt(VAL); V)
+ *(search->second(PWINDOW)) = CWindowOverridableVar((Hyprlang::INT)*V, PRIORITY_SET_PROP);
} else if (auto search = NWindowProperties::floatWindowProperties.find(PROP); search != NWindowProperties::floatWindowProperties.end()) {
if (VAL == "unset")
search->second(PWINDOW)->unset(PRIORITY_SET_PROP);
- else {
+ else if (VAL.starts_with("relative")) {
+ const auto V = std::stof(VAL.substr(VAL.find(' ')));
+ search->second(PWINDOW)->increment(V, PRIORITY_SET_PROP);
+ } else {
const auto V = std::stof(VAL);
*(search->second(PWINDOW)) = CWindowOverridableVar(V, PRIORITY_SET_PROP);
}
diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp
index 89be4e99..e116aa96 100644
--- a/src/managers/PointerManager.cpp
+++ b/src/managers/PointerManager.cpp
@@ -1,6 +1,7 @@
#include "PointerManager.hpp"
#include "../Compositor.hpp"
#include "../config/ConfigValue.hpp"
+#include "../config/ConfigManager.hpp"
#include "../protocols/PointerGestures.hpp"
#include "../protocols/RelativePointer.hpp"
#include "../protocols/FractionalScale.hpp"
diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp
index 9d2fda1d..e8481a26 100644
--- a/src/managers/XWaylandManager.cpp
+++ b/src/managers/XWaylandManager.cpp
@@ -2,6 +2,7 @@
#include "../Compositor.hpp"
#include "../events/Events.hpp"
#include "../config/ConfigValue.hpp"
+#include "../helpers/Monitor.hpp"
#include "../protocols/XDGShell.hpp"
#include "../protocols/core/Compositor.hpp"
#include "../xwayland/XWayland.hpp"
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 2153b916..4c5de729 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -4,6 +4,7 @@
#include <cstdint>
#include <ranges>
#include "../../config/ConfigValue.hpp"
+#include "../../config/ConfigManager.hpp"
#include "../../desktop/Window.hpp"
#include "../../desktop/LayerSurface.hpp"
#include "../../protocols/CursorShape.hpp"
diff --git a/src/managers/input/Touch.cpp b/src/managers/input/Touch.cpp
index a166a256..6b6cc376 100644
--- a/src/managers/input/Touch.cpp
+++ b/src/managers/input/Touch.cpp
@@ -4,6 +4,7 @@
#include "../../Compositor.hpp"
#include "../../desktop/LayerSurface.hpp"
#include "../../config/ConfigValue.hpp"
+#include "../../helpers/Monitor.hpp"
#include "../../devices/ITouch.hpp"
#include "../SeatManager.hpp"
#include "managers/AnimationManager.hpp"