From b7ad1ea22648e3cad74c64cfae9afe0f1e95be10 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 May 2016 21:20:55 +0200 Subject: [PATCH] [Horus] Impossible to remove widgets in layouts --- radio/src/gui/horus/screens_setup.cpp | 2 +- radio/src/gui/horus/widgets_container.h | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/horus/screens_setup.cpp b/radio/src/gui/horus/screens_setup.cpp index e5e21649d..72d7f8587 100644 --- a/radio/src/gui/horus/screens_setup.cpp +++ b/radio/src/gui/horus/screens_setup.cpp @@ -286,7 +286,7 @@ void onZoneMenu(const char * result) pushMenu(menuWidgetSettings); } else if (result == STR_REMOVE_WIDGET) { - currentContainer->setWidget(currentZone, NULL); + currentContainer->createWidget(currentZone, NULL); storageDirty(EE_MODEL); } } diff --git a/radio/src/gui/horus/widgets_container.h b/radio/src/gui/horus/widgets_container.h index ea7648fd0..13c02f570 100644 --- a/radio/src/gui/horus/widgets_container.h +++ b/radio/src/gui/horus/widgets_container.h @@ -82,8 +82,13 @@ class WidgetsContainer: public WidgetsContainerInterface { if (widgets) { memset(persistentData->zones[index].widgetName, 0, sizeof(persistentData->zones[index].widgetName)); - strncpy(persistentData->zones[index].widgetName, factory->getName(), sizeof(persistentData->zones[index].widgetName)); - widgets[index] = factory->create(getZone(index), &persistentData->zones[index].widgetData); + if (factory) { + strncpy(persistentData->zones[index].widgetName, factory->getName(), sizeof(persistentData->zones[index].widgetName)); + widgets[index] = factory->create(getZone(index), &persistentData->zones[index].widgetData); + } + else { + widgets[index] = NULL; + } } }