From 4f3dd1ddb44c0798a7c1c9485b179b36304de098 Mon Sep 17 00:00:00 2001 From: Nikolai Nechaev Date: Fri, 26 Sep 2025 22:49:07 +0900 Subject: config: fix gesture dispatcher parsing with whitespaces (#11784) * config: fix gesture dispatcher parsing with whitespaces Some dispatcher functions (e.g., `moveFocusTo`) expect the given string to be stripped of whitepsaces. This fixes `gesture` line parsing: rather than calling dispatcher functions with the original string, we reuse words parsed by `CConstVarList` and join them with a comma. * tests/gestures: Add a test for `movecursortocorner` --- src/config/ConfigManager.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/config/ConfigManager.cpp') diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index cb82864f..70f0d2a3 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -3163,14 +3163,10 @@ std::optional CConfigManager::handleGesture(const std::string& comm std::expected result; - if (data[startDataIdx] == "dispatcher") { - auto dispatcherArgsIt = value.begin(); - for (int i = 0; i < startDataIdx + 2 && dispatcherArgsIt < value.end(); ++i) { - dispatcherArgsIt = std::find(dispatcherArgsIt, value.end(), ',') + 1; - } - result = g_pTrackpadGestures->addGesture(makeUnique(std::string{data[startDataIdx + 1]}, std::string(dispatcherArgsIt, value.end())), - fingerCount, direction, modMask, deltaScale); - } else if (data[startDataIdx] == "workspace") + if (data[startDataIdx] == "dispatcher") + result = g_pTrackpadGestures->addGesture(makeUnique(std::string{data[startDataIdx + 1]}, data.join(",", startDataIdx + 2)), fingerCount, + direction, modMask, deltaScale); + else if (data[startDataIdx] == "workspace") result = g_pTrackpadGestures->addGesture(makeUnique(), fingerCount, direction, modMask, deltaScale); else if (data[startDataIdx] == "resize") result = g_pTrackpadGestures->addGesture(makeUnique(), fingerCount, direction, modMask, deltaScale); -- cgit v1.2.3