From 94b90a2cb0b4a0e13018cd5ebbf09394abf3b96b Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Tue, 28 Apr 2026 18:10:25 +0100 Subject: config/lua: add ExpressionVec2, allow using a table for vec2 rules (#14197) --- src/desktop/view/Window.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/desktop/view/Window.cpp') 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 CWindow::calculateSingleExpr(const std::string& s) { } std::optional 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 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); -- cgit v1.2.3