From 130110f55044964033c855121f68444357030086 Mon Sep 17 00:00:00 2001 From: philmoz Date: Mon, 6 Oct 2025 19:21:49 +1100 Subject: [PATCH] fix(color): widget layouts may not update correctly when flight mode changes (#6631) --- .../src/gui/colorlcd/mainview/layout_factory_impl.cpp | 10 ++++++++++ radio/src/gui/colorlcd/mainview/layout_factory_impl.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/radio/src/gui/colorlcd/mainview/layout_factory_impl.cpp b/radio/src/gui/colorlcd/mainview/layout_factory_impl.cpp index 97bd56bad..4f26861d4 100644 --- a/radio/src/gui/colorlcd/mainview/layout_factory_impl.cpp +++ b/radio/src/gui/colorlcd/mainview/layout_factory_impl.cpp @@ -21,6 +21,7 @@ #include "layout_factory_impl.h" +#include "edgetx.h" #include "sliders.h" #include "trims.h" #include "view_main.h" @@ -94,5 +95,14 @@ rect_t Layout::getZone(unsigned int index) const return {z.x + xo, z.y + yo, w, h}; } +void Layout::checkEvents() +{ + Window::checkEvents(); + if (lastFM != mixerCurrentFlightMode) { + lastFM = mixerCurrentFlightMode; + updateZones(); + } +} + const ZoneOption defaultZoneOptions[] = {LAYOUT_COMMON_OPTIONS, LAYOUT_OPTIONS_END}; diff --git a/radio/src/gui/colorlcd/mainview/layout_factory_impl.h b/radio/src/gui/colorlcd/mainview/layout_factory_impl.h index a0a3dcf89..3833c9421 100644 --- a/radio/src/gui/colorlcd/mainview/layout_factory_impl.h +++ b/radio/src/gui/colorlcd/mainview/layout_factory_impl.h @@ -113,6 +113,7 @@ class Layout: public LayoutBase std::unique_ptr decoration; uint8_t zoneCount; uint8_t* zoneMap = nullptr; + uint8_t lastFM = 0; // Last time we refreshed the window uint32_t lastRefresh = 0; @@ -122,6 +123,8 @@ class Layout: public LayoutBase unsigned int getZonesCount() const override { return zoneCount; } rect_t getZone(unsigned int index) const override; + + void checkEvents() override; }; template