From 5da9f9257f76ff91f7988fc9b0ad062a1db7c337 Mon Sep 17 00:00:00 2001 From: philmoz Date: Thu, 17 Sep 2026 08:46:11 +1000 Subject: [PATCH] fix(color): model yaml file may be needlessly saved when editing screen setup (#7795) --- radio/src/gui/colorlcd/mainview/screen_setup.cpp | 2 ++ radio/src/gui/colorlcd/mainview/topbar.cpp | 14 ++++---------- radio/src/gui/colorlcd/mainview/topbar.h | 1 - .../src/gui/colorlcd/mainview/widgets_setup.cpp | 16 ++++++---------- radio/src/gui/colorlcd/mainview/widgets_setup.h | 2 -- 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/radio/src/gui/colorlcd/mainview/screen_setup.cpp b/radio/src/gui/colorlcd/mainview/screen_setup.cpp index ce40cef33..261a1db6a 100644 --- a/radio/src/gui/colorlcd/mainview/screen_setup.cpp +++ b/radio/src/gui/colorlcd/mainview/screen_setup.cpp @@ -168,6 +168,8 @@ void ScreenSetupPage::build(Window* window) } buildLayoutOptions(); + + SET_DIRTY(); }; Window* btn = new LayoutChoice(line, getFactory, setLayout); diff --git a/radio/src/gui/colorlcd/mainview/topbar.cpp b/radio/src/gui/colorlcd/mainview/topbar.cpp index 332406bd7..792d7c115 100644 --- a/radio/src/gui/colorlcd/mainview/topbar.cpp +++ b/radio/src/gui/colorlcd/mainview/topbar.cpp @@ -101,19 +101,11 @@ void SetupTopBarWidgetsPage::onClicked() // block event forwarding (window is transparent) } -void SetupTopBarWidgetsPage::onCancel() { deleteLater(); } - -void SetupTopBarWidgetsPage::deleteLater() +void SetupTopBarWidgetsPage::onCancel() { - if (_deleted) return; - - // and continue async deletion... - Window::deleteLater(); - + deleteLater(); // restore screen setting tab on top QuickMenu::openPage(QM_UI_SETUP); - - storageDirty(EE_MODEL); } //----------------------------------------------------------------------------- @@ -208,6 +200,8 @@ void TopBar::removeWidget(unsigned int index) g_model.getTopbarData()->clearZone(index); WidgetsContainer::removeWidget(index); + + storageDirty(EE_MODEL); } void TopBar::load() diff --git a/radio/src/gui/colorlcd/mainview/topbar.h b/radio/src/gui/colorlcd/mainview/topbar.h index 0a313d48d..2fef1f56a 100644 --- a/radio/src/gui/colorlcd/mainview/topbar.h +++ b/radio/src/gui/colorlcd/mainview/topbar.h @@ -38,7 +38,6 @@ class SetupTopBarWidgetsPage : public NavWindow void onClicked() override; void onCancel() override; - void deleteLater() override; #if defined(HARDWARE_KEYS) void onPressSYS() override {} diff --git a/radio/src/gui/colorlcd/mainview/widgets_setup.cpp b/radio/src/gui/colorlcd/mainview/widgets_setup.cpp index 2ffbcad00..880daf55c 100644 --- a/radio/src/gui/colorlcd/mainview/widgets_setup.cpp +++ b/radio/src/gui/colorlcd/mainview/widgets_setup.cpp @@ -45,7 +45,10 @@ SetupWidgetsPageSlot::SetupWidgetsPageSlot(Window* parent, const rect_t& rect, menu->addLine(STR_WIDGET_SETTINGS, [=]() { new WidgetSettings(widget); }); menu->addLine(STR_REMOVE_WIDGET, - [=]() { container->removeWidget(slotIndex); }); + [=]() { + container->removeWidget(slotIndex); + storageDirty(EE_MODEL); + }); } else { addNewWidget(container, slotIndex); } @@ -98,6 +101,7 @@ void SetupWidgetsPageSlot::addNewWidget(WidgetsContainer* container, auto widget = container->getWidget(slotIndex); if (widget->hasOptions()) new WidgetSettings(widget); + storageDirty(EE_MODEL); }); if (cur && strcmp(cur, factory->getDisplayName()) == 0) selected = index; @@ -147,14 +151,8 @@ void SetupWidgetsPage::onClicked() void SetupWidgetsPage::onCancel() { deleteLater(); + QuickMenu::openPage((QMPage)(QM_UI_SCREEN1 + customScreenIdx)); -} - -void SetupWidgetsPage::deleteLater() -{ - if (_deleted) return; - - Window::deleteLater(); // and continue async deletion... auto screen = customScreens[customScreenIdx]; @@ -163,6 +161,4 @@ void SetupWidgetsPage::deleteLater() viewMain->setCurrentMainView(savedView); viewMain->showTopBarEdgeTxButton(); } - - storageDirty(EE_MODEL); } diff --git a/radio/src/gui/colorlcd/mainview/widgets_setup.h b/radio/src/gui/colorlcd/mainview/widgets_setup.h index 7def501a2..508070a6b 100644 --- a/radio/src/gui/colorlcd/mainview/widgets_setup.h +++ b/radio/src/gui/colorlcd/mainview/widgets_setup.h @@ -55,8 +55,6 @@ class SetupWidgetsPage : public NavWindow protected: uint8_t customScreenIdx; unsigned savedView = 0; - - void deleteLater() override; }; class SetupWidgetsPageSlot : public ButtonBase