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; + } } }