diff --git a/radio/src/datastructs_model.cpp b/radio/src/datastructs_model.cpp index ab5a65962..284227047 100644 --- a/radio/src/datastructs_model.cpp +++ b/radio/src/datastructs_model.cpp @@ -197,6 +197,11 @@ void ModelData::cfsSetOffColorLuaOverride(uint8_t n, bool v) { static TopBarPersistentData _topbarData; static CustomScreenData* _screenData[MAX_CUSTOM_SCREENS]; +bool ModelData::hasScreenData(int screenNum) +{ + return _screenData[screenNum] != nullptr; +} + CustomScreenData* ModelData::getScreenData(int screenNum) { if (_screenData[screenNum] == nullptr) { diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index a95dd9ed3..62e7cf0f1 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -835,6 +835,7 @@ PACK(struct ModelData { const char* getScreenLayoutId(int screenNum); void setScreenLayoutId(int screenNum, const char* s); TopBarPersistentData* getTopbarData(); + bool hasScreenData(int screenNum); CustomScreenData* getScreenData(int screenNum); LayoutPersistentData* getScreenLayoutData(int screenNum); WidgetPersistentData* getWidgetData(int screenNum, int zoneNum); diff --git a/radio/src/storage/storage_common.cpp b/radio/src/storage/storage_common.cpp index 75f0f942b..92cf584cc 100644 --- a/radio/src/storage/storage_common.cpp +++ b/radio/src/storage/storage_common.cpp @@ -161,6 +161,9 @@ static void sanitizeMixerLines() void postModelLoad(bool alarms) { #if defined(COLORLCD) + if (!g_model.hasScreenData(0)) + LayoutFactory::loadDefaultLayout(); + if (g_model.topbarWidgetWidth[0] == 0) { // Set default width for top bar widgets for (int i = 0; i < MAX_TOPBAR_ZONES; i += 1)