From 4f6e0223c94676de07e115c41cb2fe749a905064 Mon Sep 17 00:00:00 2001 From: philmoz Date: Thu, 27 Aug 2026 20:33:19 +1000 Subject: [PATCH] fix(color): UI issues adding and removing labels (#7715) --- radio/src/gui/colorlcd/model/model_select.cpp | 14 ++++++-------- radio/src/storage/modelslist.cpp | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/colorlcd/model/model_select.cpp b/radio/src/gui/colorlcd/model/model_select.cpp index 7a3011ba7..c9db03ac4 100644 --- a/radio/src/gui/colorlcd/model/model_select.cpp +++ b/radio/src/gui/colorlcd/model/model_select.cpp @@ -663,14 +663,8 @@ void ModelLabelsWindow::newLabel() new LabelDialog(tmpLabel, LABEL_LENGTH, STR_ENTER_LABEL, [=](std::string label) { int newlabindex = modelslabels.addLabel(label); if (newlabindex >= 0) { - std::set newset; - newset.insert(newlabindex); auto labels = getLabels(); lblselector->setNames(labels); - lblselector->setSelected(newset); - if (g_eeGeneral.labelSingleSelect) - lblselector->setActiveItem(newlabindex); - updateFilteredLabels(newset); } }); } @@ -869,8 +863,12 @@ void ModelLabelsWindow::buildBody(Window *window) std::set newset; lblselector->setNames(labels); lblselector->setSelected(newset); - if (g_eeGeneral.labelSingleSelect && selected == lblselector->getActiveItem()) - lblselector->setActiveItem(-1); + if (g_eeGeneral.labelSingleSelect) { + if (selected == lblselector->getActiveItem()) + lblselector->setActiveItem(-1); + else + newset.insert(lblselector->getActiveItem()); + } mdlselector->clearButtons(); updateFilteredLabels(newset); }); diff --git a/radio/src/storage/modelslist.cpp b/radio/src/storage/modelslist.cpp index 1d0914a60..ce8c15cb5 100644 --- a/radio/src/storage/modelslist.cpp +++ b/radio/src/storage/modelslist.cpp @@ -358,8 +358,8 @@ int ModelMap::addLabel(std::string lbl) if (lbl == STR_UNLABELEDMODEL) return -1; // Limit maximum label length, TODO... Truncate UTF8 Properly - lbl = lbl.substr(0, LABEL_LENGTH); removeYAMLChars(lbl); + lbl = lbl.substr(0, LABEL_LENGTH); if (lbl.size() == 0) return -1; // Add a new label if it doesn't already exist in the list