From aa6938eed78dc6b928016773e166d7b9e2e59e0b Mon Sep 17 00:00:00 2001 From: philmoz Date: Tue, 27 May 2025 07:47:57 +1000 Subject: [PATCH] fix(bw): main view switch display may be incorrect (#6308) --- radio/src/gui/128x64/view_main.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index bb798913e..924aa56a5 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -519,12 +519,15 @@ void menuMainView(event_t event) // Switches // -> 2 columns: one for each side // -> 4 slots on each side - uint8_t switches = switchGetMaxSwitches(); + uint8_t maxSwitch = 0; + for (uint8_t n = 0; n < switchGetMaxSwitches(); n += 1) + if (SWITCH_EXISTS(n) && !switchIsFlex(n)) + maxSwitch = n + 1; - if (switches < 7) { - for (int i = 0; i < switches; ++i) { - if (SWITCH_EXISTS(i) && !switchIsFlex(i)) { - auto switch_display = switchGetDisplayPosition(i); + for (int i = 0; i < maxSwitch; ++i) { + if (SWITCH_EXISTS(i) && !switchIsFlex(i)) { + auto switch_display = switchGetDisplayPosition(i); + if (maxSwitch < 7) { coord_t x = switch_display.col == 0 ? 3 * FW + 3 : 18 * FW + 1; coord_t y = 33 + switch_display.row * FH; getvalue_t val = getValue(MIXSRC_FIRST_SWITCH + i); @@ -534,14 +537,9 @@ void menuMainView(event_t event) : ((val == 0) ? 3 * i + 2 : 3 * i + 3)); drawSwitch(x, y, sw, CENTERED, false); } - } - } - else { - for (int i = 0; i < switches; ++i) { - if (SWITCH_EXISTS(i) && !switchIsFlex(i)) { - auto switch_display = switchGetDisplayPosition(i); + else { coord_t x = (switch_display.col == 0 ? 8 : 96) + switch_display.row * 5; - if (switches < 9) x += 3; + if (maxSwitch < 9) x += (switch_display.col == 0 ? 2 : 3); drawSmallSwitch(x, 5 * FH + 1, 4, i); } }