From 71305d502ce68dad5fe33e8104ac5065ffa2a9a8 Mon Sep 17 00:00:00 2001 From: philmoz Date: Thu, 29 Jan 2026 12:16:34 +1100 Subject: [PATCH] fix(color): widget background function called when one-time script is running (#7025) --- radio/src/gui/colorlcd/libui/mainwindow.cpp | 3 ++- radio/src/gui/colorlcd/libui/mainwindow.h | 3 +++ radio/src/gui/colorlcd/standalone_lua.cpp | 6 ++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/colorlcd/libui/mainwindow.cpp b/radio/src/gui/colorlcd/libui/mainwindow.cpp index ddf5caa2b..21d6dcf15 100644 --- a/radio/src/gui/colorlcd/libui/mainwindow.cpp +++ b/radio/src/gui/colorlcd/libui/mainwindow.cpp @@ -64,7 +64,8 @@ void MainWindow::run() auto start = timersGetMsTick(); #endif - ViewMain::refreshWidgets(); + if (widgetRefreshEnable) + ViewMain::refreshWidgets(); auto opaque = Window::firstOpaque(); if (opaque) { diff --git a/radio/src/gui/colorlcd/libui/mainwindow.h b/radio/src/gui/colorlcd/libui/mainwindow.h index 5273eb159..54f0e589c 100644 --- a/radio/src/gui/colorlcd/libui/mainwindow.h +++ b/radio/src/gui/colorlcd/libui/mainwindow.h @@ -51,9 +51,12 @@ class MainWindow: public Window void shutdown(); + void enableWidgetRefresh(bool state) { widgetRefreshEnable = state; } + protected: lv_obj_t* background = nullptr; const BitmapBuffer *backgroundBitmap = nullptr; + bool widgetRefreshEnable = true; static MainWindow * _instance; diff --git a/radio/src/gui/colorlcd/standalone_lua.cpp b/radio/src/gui/colorlcd/standalone_lua.cpp index 9edf75ddf..f26ada8c9 100644 --- a/radio/src/gui/colorlcd/standalone_lua.cpp +++ b/radio/src/gui/colorlcd/standalone_lua.cpp @@ -136,6 +136,8 @@ StandaloneLuaWindow::StandaloneLuaWindow(bool useLvgl, int initFn, int runFn) : pushLayer(true); + MainWindow::instance()->enableWidgetRefresh(false); + if (useLvglLayout()) { padAll(PAD_ZERO); etx_scrollbar(lvobj); @@ -205,8 +207,6 @@ void StandaloneLuaWindow::deleteLater() luaScriptManager = nullptr; - Window::deleteLater(); - _instance = nullptr; #if defined(USE_HATS_AS_KEYS) @@ -217,6 +217,8 @@ void StandaloneLuaWindow::deleteLater() luaEmptyEventBuffer(); + MainWindow::instance()->enableWidgetRefresh(true); + Window::deleteLater(); }