From 0318d63bf8c82acad6580e06cb9e3cc3dbfcccb0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 3 Nov 2016 22:01:30 +0100 Subject: [PATCH] [X7D] Quick & dirty fix for special functions navigation which was broken --- radio/src/gui/128x64/menu_radio.cpp | 22 ++++++++++++++- .../gui/128x64/model_special_functions.cpp | 27 +++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/128x64/menu_radio.cpp b/radio/src/gui/128x64/menu_radio.cpp index e3ceeabdb..da14ebd4e 100644 --- a/radio/src/gui/128x64/menu_radio.cpp +++ b/radio/src/gui/128x64/menu_radio.cpp @@ -23,7 +23,27 @@ #if defined(CPUARM) void menuRadioSpecialFunctions(event_t event) { +#if defined(PCBX7D) + const CustomFunctionData * cfn = &g_eeGeneral.customFn[menuVerticalPosition]; + if (!CFN_SWITCH(cfn) && menuHorizontalPosition < 0 && event==EVT_KEY_BREAK(KEY_ENTER)) { + menuHorizontalPosition = 0; + } +#endif + MENU(STR_MENUSPECIALFUNCS, menuTabGeneral, MENU_RADIO_SPECIAL_FUNCTIONS, HEADER_LINE+MAX_SPECIAL_FUNCTIONS, { HEADER_LINE_COLUMNS NAVIGATION_LINE_BY_LINE|4/*repeated*/ }); - return menuSpecialFunctions(event, g_eeGeneral.customFn, &globalFunctionsContext); + +#if defined(PCBX7D) + if (!CFN_SWITCH(cfn) && menuHorizontalPosition < 0) { + menuHorizontalPosition = 0; + } +#endif + + menuSpecialFunctions(event, g_eeGeneral.customFn, &globalFunctionsContext); + +#if defined(PCBX7D) + if (!CFN_SWITCH(cfn) && menuHorizontalPosition == 0 && s_editMode <= 0) { + menuHorizontalPosition = -1; + } +#endif } #endif diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index 021f5f865..6e09beb54 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -372,11 +372,34 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF break; } } +#if defined(PCBX7D) + if (sub==k && menuHorizontalPosition<0 && CFN_SWITCH(cfn)) { + lcdInvertLine(i+1); + } +#endif } } void menuModelSpecialFunctions(event_t event) { - MENU(STR_MENUCUSTOMFUNC, menuTabModel, MENU_MODEL_SPECIAL_FUNCTIONS, MAX_SPECIAL_FUNCTIONS+1, {0, NAVIGATION_LINE_BY_LINE|4/*repeated*/}); - return menuSpecialFunctions(event, g_model.customFn, &modelFunctionsContext); +#if defined(PCBX7D) + const CustomFunctionData * cfn = &g_model.customFn[menuVerticalPosition]; + if (!CFN_SWITCH(cfn) && menuHorizontalPosition < 0 && event==EVT_KEY_BREAK(KEY_ENTER)) { + menuHorizontalPosition = 0; + } +#endif + MENU(STR_MENUCUSTOMFUNC, menuTabModel, MENU_MODEL_SPECIAL_FUNCTIONS, HEADER_LINE+MAX_SPECIAL_FUNCTIONS, { HEADER_LINE_COLUMNS NAVIGATION_LINE_BY_LINE|4/*repeated*/ }); + +#if defined(PCBX7D) + if (!CFN_SWITCH(cfn) && menuHorizontalPosition < 0) { + menuHorizontalPosition = 0; + } +#endif + menuSpecialFunctions(event, g_model.customFn, &modelFunctionsContext); + +#if defined(PCBX7D) + if (!CFN_SWITCH(cfn) && menuHorizontalPosition == 0 && s_editMode <= 0) { + menuHorizontalPosition = -1; + } +#endif }