diff --git a/radio/src/gui/colorlcd/layout.cpp b/radio/src/gui/colorlcd/layout.cpp index 10cdf1a96..862168d1f 100644 --- a/radio/src/gui/colorlcd/layout.cpp +++ b/radio/src/gui/colorlcd/layout.cpp @@ -123,8 +123,6 @@ void loadCustomScreens() } auto topbar = viewMain->getTopbar(); - - // TODO: how to reload this guy? topbar->load(); viewMain->setCurrentMainView(0); diff --git a/radio/src/gui/colorlcd/widgets/widgets_container_impl.h b/radio/src/gui/colorlcd/widgets/widgets_container_impl.h index 0fb615c3a..9d2836781 100644 --- a/radio/src/gui/colorlcd/widgets/widgets_container_impl.h +++ b/radio/src/gui/colorlcd/widgets/widgets_container_impl.h @@ -43,10 +43,12 @@ class WidgetsContainerImpl: public WidgetsContainer // remove old one if existing removeWidget(index); - Widget * widget = nullptr; + Widget* widget = nullptr; if (factory) { - strncpy(persistentData->zones[index].widgetName, factory->getName(), sizeof(ZonePersistentData::widgetName)); - widget = factory->create(this, getZone(index), &persistentData->zones[index].widgetData); + strncpy(persistentData->zones[index].widgetName, factory->getName(), + sizeof(ZonePersistentData::widgetName)); + widget = factory->create(this, getZone(index), + &persistentData->zones[index].widgetData); } widgets[index] = widget; @@ -61,12 +63,16 @@ class WidgetsContainerImpl: public WidgetsContainer if (index >= N) return; - if (widgets[index]) + if (widgets[index]) { + removeField(widgets[index]); widgets[index]->deleteLater(); + } widgets[index] = nullptr; - memset(persistentData->zones[index].widgetName, 0, sizeof(ZonePersistentData::widgetName)); - memset(&persistentData->zones[index].widgetData, 0, sizeof(Widget::PersistentData)); + memset(persistentData->zones[index].widgetName, 0, + sizeof(ZonePersistentData::widgetName)); + memset(&persistentData->zones[index].widgetData, 0, + sizeof(Widget::PersistentData)); } Widget * getWidget(unsigned int index) override @@ -89,6 +95,7 @@ class WidgetsContainerImpl: public WidgetsContainer // remove old widget if (widgets[i]) { + removeField(widgets[i]); widgets[i]->deleteLater(); widgets[i] = nullptr; } diff --git a/radio/src/thirdparty/libopenui b/radio/src/thirdparty/libopenui index 6b661c490..d1c94e627 160000 --- a/radio/src/thirdparty/libopenui +++ b/radio/src/thirdparty/libopenui @@ -1 +1 @@ -Subproject commit 6b661c4907bcafc08436e5c96fc5a38e9eb6e499 +Subproject commit d1c94e6279e7b829f4b0953bc4bea1100bae5543