From 251c3e874ad8b2ba13a1c92da8c55b7314e03ef6 Mon Sep 17 00:00:00 2001
From: patrick96
Date: Sat, 23 Sep 2017 16:49:39 +0200
Subject: [PATCH] fix(renderer): Only close a single action
Before the renderer would close all active matching actions. That way
nested actions would also close their surrounding action block
---
src/components/renderer.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/components/renderer.cpp b/src/components/renderer.cpp
index 7ee143a0..1fe264e4 100644
--- a/src/components/renderer.cpp
+++ b/src/components/renderer.cpp
@@ -767,11 +767,16 @@ bool renderer::on(const signals::parser::action_begin& evt) {
bool renderer::on(const signals::parser::action_end& evt) {
auto btn = evt.cast();
+
+ /*
+ * Iterate actions in reverse and find the FIRST active action that matches
+ */
m_log.trace_x("renderer: action_end(btn=%i)", static_cast(btn));
for (auto action = m_actions.rbegin(); action != m_actions.rend(); action++) {
if (action->active && action->align == m_align && action->button == btn) {
action->end_x = m_blocks.at(action->align).x;
action->active = false;
+ break;
}
}
return true;