mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-08 04:18:02 +02:00
config/lua: fix device typed reads
This commit is contained in:
parent
6bae1443a9
commit
be2d5f3446
10 changed files with 52 additions and 10 deletions
|
|
@ -721,9 +721,9 @@ int CConfigManager::getDeviceInt(const std::string& dev, const std::string& fiel
|
|||
float CConfigManager::getDeviceFloat(const std::string& dev, const std::string& field, const std::string& fb) {
|
||||
std::string fallback = luaConfigValueName(fb);
|
||||
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
|
||||
return *sc<const Config::FLOAT*>(v->data());
|
||||
return v->asFloat();
|
||||
if (!fallback.empty() && m_configValues.contains(fallback))
|
||||
return *sc<const Config::FLOAT*>(m_configValues.at(fallback)->data());
|
||||
return m_configValues.at(fallback)->asFloat();
|
||||
return 0.F;
|
||||
}
|
||||
|
||||
|
|
@ -731,9 +731,9 @@ Vector2D CConfigManager::getDeviceVec(const std::string& dev, const std::string&
|
|||
std::string fallback = luaConfigValueName(fb);
|
||||
auto toVec = [](const Config::VEC2& v) -> Vector2D { return {v.x, v.y}; };
|
||||
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
|
||||
return toVec(*sc<const Config::VEC2*>(v->data()));
|
||||
return toVec(v->asVec2());
|
||||
if (!fallback.empty() && m_configValues.contains(fallback))
|
||||
return toVec(*sc<const Config::VEC2*>(m_configValues.at(fallback)->data()));
|
||||
return toVec(m_configValues.at(fallback)->asVec2());
|
||||
return {0, 0};
|
||||
}
|
||||
|
||||
|
|
@ -741,9 +741,9 @@ std::string CConfigManager::getDeviceString(const std::string& dev, const std::s
|
|||
std::string fallback = luaConfigValueName(fb);
|
||||
auto clean = [](const Config::STRING& s) -> std::string { return s == STRVAL_EMPTY ? "" : s; };
|
||||
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
|
||||
return clean(*sc<const Config::STRING*>(v->data()));
|
||||
return clean(v->asString());
|
||||
if (!fallback.empty() && m_configValues.contains(fallback))
|
||||
return clean(*sc<const Config::STRING*>(m_configValues.at(fallback)->data()));
|
||||
return clean(m_configValues.at(fallback)->asString());
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,10 @@ void CLuaConfigFloat::push(lua_State* s) {
|
|||
lua_pushnumber(s, m_data);
|
||||
}
|
||||
|
||||
Config::FLOAT CLuaConfigFloat::asFloat() {
|
||||
return m_data;
|
||||
}
|
||||
|
||||
const Config::FLOAT& CLuaConfigFloat::parsed() {
|
||||
return m_data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ namespace Config::Lua {
|
|||
virtual std::string toString();
|
||||
virtual void push(lua_State* s);
|
||||
virtual void reset();
|
||||
virtual Config::FLOAT asFloat();
|
||||
|
||||
const Config::FLOAT& parsed();
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,10 @@ void CLuaConfigString::push(lua_State* s) {
|
|||
lua_pushstring(s, m_data.c_str());
|
||||
}
|
||||
|
||||
Config::STRING CLuaConfigString::asString() {
|
||||
return m_data;
|
||||
}
|
||||
|
||||
const Config::STRING& CLuaConfigString::parsed() {
|
||||
return m_data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ namespace Config::Lua {
|
|||
virtual std::string toString();
|
||||
virtual void push(lua_State* s);
|
||||
virtual void reset();
|
||||
virtual Config::STRING asString();
|
||||
|
||||
const Config::STRING& parsed();
|
||||
|
||||
|
|
|
|||
|
|
@ -25,3 +25,18 @@ Config::INTEGER ILuaConfigValue::asInt() {
|
|||
RASSERT(false, "Lua config value cannot be read as int");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Config::FLOAT ILuaConfigValue::asFloat() {
|
||||
RASSERT(false, "Lua config value cannot be read as float");
|
||||
return 0.F;
|
||||
}
|
||||
|
||||
Config::VEC2 ILuaConfigValue::asVec2() {
|
||||
RASSERT(false, "Lua config value cannot be read as vec2");
|
||||
return {};
|
||||
}
|
||||
|
||||
Config::STRING ILuaConfigValue::asString() {
|
||||
RASSERT(false, "Lua config value cannot be read as string");
|
||||
return {};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ namespace Config::Lua {
|
|||
|
||||
virtual void reset() = 0;
|
||||
virtual Config::INTEGER asInt();
|
||||
virtual Config::FLOAT asFloat();
|
||||
virtual Config::VEC2 asVec2();
|
||||
virtual Config::STRING asString();
|
||||
virtual void resetSetByUser();
|
||||
virtual bool setByUser();
|
||||
virtual void setRefreshBits(Supplementary::PropRefreshBits bits);
|
||||
|
|
|
|||
|
|
@ -91,6 +91,10 @@ void CLuaConfigVec2::push(lua_State* s) {
|
|||
lua_setfield(s, -2, "y");
|
||||
}
|
||||
|
||||
Config::VEC2 CLuaConfigVec2::asVec2() {
|
||||
return m_data;
|
||||
}
|
||||
|
||||
const Config::VEC2& CLuaConfigVec2::parsed() {
|
||||
return m_data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ namespace Config::Lua {
|
|||
virtual std::string toString();
|
||||
virtual void push(lua_State* s);
|
||||
virtual void reset();
|
||||
virtual Config::VEC2 asVec2();
|
||||
|
||||
const Config::VEC2& parsed();
|
||||
|
||||
|
|
|
|||
|
|
@ -104,12 +104,21 @@ TEST(ConfigLuaUtils, fromGenericValueCopiesRefreshBits) {
|
|||
EXPECT_EQ(out->refreshBits(), REFRESH);
|
||||
}
|
||||
|
||||
TEST(ConfigLuaUtils, asIntReadsBoolAndIntValues) {
|
||||
CLuaConfigBool boolFalse(false);
|
||||
CLuaConfigBool boolTrue(true);
|
||||
CLuaConfigInt intValue(2);
|
||||
TEST(ConfigLuaUtils, typedAccessorsReadStoredValues) {
|
||||
CLuaConfigBool boolFalse(false);
|
||||
CLuaConfigBool boolTrue(true);
|
||||
CLuaConfigInt intValue(2);
|
||||
CLuaConfigFloat floatValue(1.25F);
|
||||
CLuaConfigVec2 vecValue({3, 4});
|
||||
CLuaConfigString stringValue("value");
|
||||
|
||||
EXPECT_EQ(boolFalse.asInt(), 0);
|
||||
EXPECT_EQ(boolTrue.asInt(), 1);
|
||||
EXPECT_EQ(intValue.asInt(), 2);
|
||||
EXPECT_FLOAT_EQ(floatValue.asFloat(), 1.25F);
|
||||
|
||||
const auto vec = vecValue.asVec2();
|
||||
EXPECT_EQ(vec.x, 3);
|
||||
EXPECT_EQ(vec.y, 4);
|
||||
EXPECT_EQ(stringValue.asString(), "value");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue