* @brief Live-mode UI-tick repaint: re-runs paint() so animation and input-driven state advance * without waiting for an incoming frame. onFrame() is intentionally NOT called here; it * stays tied to new-data ticks in updateData() so per-frame script semantics hold. */
| 442 | * stays tied to new-data ticks in updateData() so per-frame script semantics hold. |
| 443 | */ |
| 444 | void Widgets::Painter::animateTick() |
| 445 | { |
| 446 | if (m_previewMode || m_index < 0 || !m_runtimeOk) |
| 447 | return; |
| 448 | |
| 449 | const auto* dashboard = &UI::Dashboard::instance(); |
| 450 | if (m_index >= dashboard->widgetCount(SerialStudio::DashboardPainter)) |
| 451 | return; |
| 452 | |
| 453 | const auto& group = dashboard->getGroupWidget(SerialStudio::DashboardPainter, m_index); |
| 454 | m_bridge->setGroup(&group); |
| 455 | |
| 456 | renderFrame(); |
| 457 | update(); |
| 458 | } |
| 459 | |
| 460 | /** |
| 461 | * @brief Invokes a pointer-event JS callback under the watchdog and repaints on success. |
nothing calls this directly
no test coverage detected