summaryrefslogtreecommitdiff
path: root/src/desktop/view/Window.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-28 18:10:25 +0100
committerGitHub <noreply@github.com>2026-04-28 18:10:25 +0100
commit94b90a2cb0b4a0e13018cd5ebbf09394abf3b96b (patch)
tree484d32baaab1acdaab7a817c86aa89f117a21059 /src/desktop/view/Window.cpp
parentab75bbfbecdfb4a0355106f740944c87cb9edd4c (diff)
config/lua: add ExpressionVec2, allow using a table for vec2 rules (#14197)
Diffstat (limited to 'src/desktop/view/Window.cpp')
-rw-r--r--src/desktop/view/Window.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp
index 53347722..e75c93a5 100644
--- a/src/desktop/view/Window.cpp
+++ b/src/desktop/view/Window.cpp
@@ -1645,12 +1645,16 @@ std::optional<double> CWindow::calculateSingleExpr(const std::string& s) {
}
std::optional<Vector2D> CWindow::calculateExpression(const std::string& s) {
- auto spacePos = s.find(' ');
- if (spacePos == std::string::npos)
+ const auto parsed = Math::parseExpressionVec2(s);
+ if (!parsed)
return std::nullopt;
- const auto LHS = calculateSingleExpr(s.substr(0, spacePos));
- const auto RHS = calculateSingleExpr(s.substr(spacePos + 1));
+ return calculateExpression(*parsed);
+}
+
+std::optional<Vector2D> CWindow::calculateExpression(const Math::SExpressionVec2& expr) {
+ const auto LHS = calculateSingleExpr(expr.x);
+ const auto RHS = calculateSingleExpr(expr.y);
if (!LHS || !RHS)
return std::nullopt;
@@ -2011,10 +2015,10 @@ void CWindow::mapWindow() {
} else {
bool setPseudo = false;
- if (!m_ruleApplicator->static_.size.empty()) {
- const auto COMPUTED = calculateExpression(m_ruleApplicator->static_.size);
+ if (m_ruleApplicator->static_.size) {
+ const auto COMPUTED = calculateExpression(*m_ruleApplicator->static_.size);
if (!COMPUTED)
- Log::logger->log(Log::ERR, "failed to parse {} as an expression", m_ruleApplicator->static_.size);
+ Log::logger->log(Log::ERR, "failed to parse {} as an expression", m_ruleApplicator->static_.size->toString());
else {
setPseudo = true;
m_target->setPseudoSize(*COMPUTED);