summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorArchSav <96357545+ArchSav@users.noreply.github.com>2025-12-30 23:45:56 +1100
committerGitHub <noreply@github.com>2025-12-30 13:45:56 +0100
commitf8464866ebacb8d17b37bab77c4ff9b1c1a34371 (patch)
tree674546ee0f0f744c3f3d4ab18bd05df0417dd374 /src/config/ConfigManager.cpp
parentea444c35bb23b6e34505ab6753e069de7801cc25 (diff)
keybinds: add inhibiting gestures under shortcut inhibitors (#12692)
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index d82983a1..5b6dee02 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -868,7 +868,7 @@ CConfigManager::CConfigManager() {
m_config->registerHandler(&::handleSubmap, "submap", {false});
m_config->registerHandler(&::handlePlugin, "plugin", {false});
m_config->registerHandler(&::handlePermission, "permission", {false});
- m_config->registerHandler(&::handleGesture, "gesture", {false});
+ m_config->registerHandler(&::handleGesture, "gesture", {true});
m_config->registerHandler(&::handleEnv, "env", {true});
// pluginza
@@ -2845,9 +2845,17 @@ std::optional<std::string> CConfigManager::handleGesture(const std::string& comm
if (direction == TRACKPAD_GESTURE_DIR_NONE)
return std::format("Invalid direction: {}", data[1]);
- int startDataIdx = 2;
- uint32_t modMask = 0;
- float deltaScale = 1.F;
+ int startDataIdx = 2;
+ uint32_t modMask = 0;
+ float deltaScale = 1.F;
+ bool disableInhibit = false;
+
+ for (const auto arg : command.substr(7)) {
+ switch (arg) {
+ case 'p': disableInhibit = true; break;
+ default: return "gesture: invalid flag";
+ }
+ }
while (true) {
@@ -2870,23 +2878,26 @@ std::optional<std::string> CConfigManager::handleGesture(const std::string& comm
if (data[startDataIdx] == "dispatcher")
result = g_pTrackpadGestures->addGesture(makeUnique<CDispatcherTrackpadGesture>(std::string{data[startDataIdx + 1]}, data.join(",", startDataIdx + 2)), fingerCount,
- direction, modMask, deltaScale);
+ direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "workspace")
- result = g_pTrackpadGestures->addGesture(makeUnique<CWorkspaceSwipeGesture>(), fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->addGesture(makeUnique<CWorkspaceSwipeGesture>(), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "resize")
- result = g_pTrackpadGestures->addGesture(makeUnique<CResizeTrackpadGesture>(), fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->addGesture(makeUnique<CResizeTrackpadGesture>(), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "move")
- result = g_pTrackpadGestures->addGesture(makeUnique<CMoveTrackpadGesture>(), fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->addGesture(makeUnique<CMoveTrackpadGesture>(), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "special")
- result = g_pTrackpadGestures->addGesture(makeUnique<CSpecialWorkspaceGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale);
+ result =
+ g_pTrackpadGestures->addGesture(makeUnique<CSpecialWorkspaceGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "close")
- result = g_pTrackpadGestures->addGesture(makeUnique<CCloseTrackpadGesture>(), fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->addGesture(makeUnique<CCloseTrackpadGesture>(), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "float")
- result = g_pTrackpadGestures->addGesture(makeUnique<CFloatTrackpadGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale);
+ result =
+ g_pTrackpadGestures->addGesture(makeUnique<CFloatTrackpadGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale, disableInhibit);
else if (data[startDataIdx] == "fullscreen")
- result = g_pTrackpadGestures->addGesture(makeUnique<CFullscreenTrackpadGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->addGesture(makeUnique<CFullscreenTrackpadGesture>(std::string{data[startDataIdx + 1]}), fingerCount, direction, modMask, deltaScale,
+ disableInhibit);
else if (data[startDataIdx] == "unset")
- result = g_pTrackpadGestures->removeGesture(fingerCount, direction, modMask, deltaScale);
+ result = g_pTrackpadGestures->removeGesture(fingerCount, direction, modMask, deltaScale, disableInhibit);
else
return std::format("Invalid gesture: {}", data[startDataIdx]);