summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorPhilip Damianik <39028343+pdamianik@users.noreply.github.com>2023-09-06 16:14:18 +0200
committerGitHub <noreply@github.com>2023-09-06 16:14:18 +0200
commita15e3e1f380e3b90f976bc7d1d8b4daabd4cbd3b (patch)
tree52fa8a5e37d31e1f0f94d16b59532700ec136cb2 /src/config/ConfigManager.cpp
parenta1cc99a9868ceb31d466e4d31baf6b70721d9321 (diff)
config/input: Improve fallback behavior for unset device config values (#3184)
* Fix fallback behavior for unset device config values * Replace overload with default argument for fallback config key * Remove default value for fallback argument in source * Fix typos
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 5aea669b..0865eae6 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -1685,7 +1685,7 @@ SConfigValue CConfigManager::getConfigValueSafe(const std::string& val) {
return copy;
}
-SConfigValue CConfigManager::getConfigValueSafeDevice(const std::string& dev, const std::string& val, std::optional<bool> touchpad) {
+SConfigValue CConfigManager::getConfigValueSafeDevice(const std::string& dev, const std::string& val, const std::string& fallback) {
std::lock_guard<std::mutex> lg(configmtx);
const auto it = deviceConfigs.find(dev);
@@ -1695,23 +1695,14 @@ SConfigValue CConfigManager::getConfigValueSafeDevice(const std::string& dev, co
return SConfigValue();
}
- SConfigValue copy = it->second[val];
+ const SConfigValue DEVICECONFIG = it->second[val];
// fallback if not set explicitly
- if (!copy.set) {
- for (auto& cv : configValues) {
- auto foundIt = cv.first.find(val);
- if (foundIt == std::string::npos)
- continue;
-
- if (cv.first == "input:" + val || (touchpad.value_or(true) && cv.first == "input:touchpad:" + val) || cv.first == "input:touchdevice:" + val ||
- cv.first == "input:tablet:" + val || cv.first == "input:tablet:" + val) {
- copy = cv.second;
- }
- }
+ if (!DEVICECONFIG.set && !fallback.empty()) {
+ return configValues[fallback];
}
- return copy;
+ return DEVICECONFIG;
}
int CConfigManager::getInt(const std::string& v) {
@@ -1731,16 +1722,16 @@ std::string CConfigManager::getString(const std::string& v) {
return VAL;
}
-int CConfigManager::getDeviceInt(const std::string& dev, const std::string& v, std::optional<bool> touchpad) {
- return getConfigValueSafeDevice(dev, v, touchpad).intValue;
+int CConfigManager::getDeviceInt(const std::string& dev, const std::string& v, const std::string& fallback) {
+ return getConfigValueSafeDevice(dev, v, fallback).intValue;
}
-float CConfigManager::getDeviceFloat(const std::string& dev, const std::string& v, std::optional<bool> touchpad) {
- return getConfigValueSafeDevice(dev, v, touchpad).floatValue;
+float CConfigManager::getDeviceFloat(const std::string& dev, const std::string& v, const std::string& fallback) {
+ return getConfigValueSafeDevice(dev, v, fallback).floatValue;
}
-std::string CConfigManager::getDeviceString(const std::string& dev, const std::string& v, std::optional<bool> touchpad) {
- auto VAL = getConfigValueSafeDevice(dev, v, touchpad).strValue;
+std::string CConfigManager::getDeviceString(const std::string& dev, const std::string& v, const std::string& fallback) {
+ auto VAL = getConfigValueSafeDevice(dev, v, fallback).strValue;
if (VAL == STRVAL_EMPTY)
return "";