fix(color): new model may not load radio info and date/time widgets (#6825)

This commit is contained in:
philmoz
2025-11-25 13:18:44 +10:00
committed by GitHub
parent 2932822e37
commit a59d9515d9
6 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -245,7 +245,7 @@ void ModelData::removeScreenLayout(int idx)
_screenData[idx] = nullptr;
}
void ModelData::initScreenData()
void ModelData::resetScreenData()
{
_topbarData.clear();
+1 -1
View File
@@ -831,7 +831,7 @@ PACK(struct ModelData {
NOBACKUP(uint8_t topbarWidgetWidth[MAX_TOPBAR_ZONES]);
NOBACKUP(uint8_t view);
void initScreenData();
void resetScreenData();
const char* getScreenLayoutId(int screenNum);
void setScreenLayoutId(int screenNum, const char* s);
TopBarPersistentData* getTopbarData();
+4 -5
View File
@@ -33,7 +33,7 @@ const LayoutOption defaultLayoutOptions[] = {LAYOUT_COMMON_OPTIONS,
void ZonePersistentData::clear()
{
widgetName[0] = 0;
widgetName.clear();
widgetData.clear();
}
@@ -69,7 +69,7 @@ WidgetPersistentData* LayoutPersistentData::getWidgetData(int idx)
bool LayoutPersistentData::hasWidget(int idx)
{
return zones[idx].widgetName[0] != 0;
return !zones[idx].widgetName.empty();
}
//-----------------------------------------------------------------------------
@@ -280,9 +280,8 @@ void LayoutFactory::initPersistentData(int screenNum, bool setDefault) const
// TODO compiler bug? The CPU freezes ... persistentData->options[i++]
// = option->deflt;
auto optVal = &layoutData->options[i];
if (setDefault) {
memcpy(&optVal->value, &option->deflt, sizeof(LayoutOptionValue));
}
if (setDefault)
optVal->value.unsignedValue = option->deflt.unsignedValue;
optVal->type = layoutValueEnumFromType(option->type);
}
}
+2 -1
View File
@@ -79,7 +79,8 @@ void WidgetPersistentData::setDefault(int idx, const WidgetOption* opt, bool for
if (forced || options[idx].type != optType) {
// reset to default value
options[idx].type = optType;
memcpy((void*)&options[idx].value, (void*)&opt->deflt, sizeof(WidgetOptionValue));
options[idx].value.unsignedValue = opt->deflt.unsignedValue;
options[idx].value.stringValue = opt->deflt.stringValue;
}
}
+1 -1
View File
@@ -144,7 +144,7 @@ void applyDefaultTemplate()
#endif
#if defined(COLORLCD)
g_model.initScreenData();
g_model.resetScreenData();
LayoutFactory::loadDefaultLayout();
#endif
+1 -1
View File
@@ -348,7 +348,7 @@ const char * readModelYaml(const char * filename, uint8_t * buffer, uint32_t siz
initCustomSwitches();
#endif
#if defined(COLORLCD)
g_model.initScreenData();
g_model.resetScreenData();
#endif
auto md = reinterpret_cast<ModelData*>(buffer);
#if defined(FLIGHT_MODES) && defined(GVARS)