From 85063f26a936b3ffae731a43961814160ded1a2a Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 17 Nov 2023 15:25:40 +1000 Subject: [PATCH] fix(color): New inputs disappear until restart Cherrypick of #4317 and #4330 Co-authored-by: philmoz --- radio/src/gui/colorlcd/model_inputs.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/radio/src/gui/colorlcd/model_inputs.cpp b/radio/src/gui/colorlcd/model_inputs.cpp index ea7f6e69661..50f28de6f03 100644 --- a/radio/src/gui/colorlcd/model_inputs.cpp +++ b/radio/src/gui/colorlcd/model_inputs.cpp @@ -336,19 +336,22 @@ void ModelInputsPage::newInput() menu->setTitle(STR_MENU_INPUTS); uint8_t chn = 0; + uint8_t index = 0; ExpoData* line = g_model.expoData; // search for unused channels - for (uint8_t i = 0; i < MAX_EXPOS; i++) { + for (uint8_t i = 0; i < MAX_EXPOS && chn < MAX_INPUTS; i++) { if (!EXPO_VALID(line) || (line->chn > chn)) { - if (chn >= MAX_INPUTS) break; - std::string name(getSourceString(chn+1)); - menu->addLineBuffered(name.c_str(), [=]() { insertInput(chn, i); }); + uint8_t chnEnd = EXPO_VALID(line) ? line->chn : chn + 1; + for (; chn < chnEnd; chn += 1) { + std::string name(getSourceString(chn+1)); + menu->addLineBuffered(name.c_str(), [=]() { insertInput(chn, index); }); + } } - if (EXPO_VALID(line)) + if (EXPO_VALID(line)) { chn = line->chn + 1; - else - chn += 1; + index += 1; + } ++line; }