From 68cb9c2d92cb6bfefb79dd8f2395a0e6b0562006 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Wed, 23 Jun 2021 12:49:42 +0200 Subject: [PATCH] [color] Patch unavailabel global/special function if not available Resolves #295 --- radio/src/gui/colorlcd/special_functions.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/special_functions.cpp b/radio/src/gui/colorlcd/special_functions.cpp index 3faf9d9ad..f60ca8a17 100644 --- a/radio/src/gui/colorlcd/special_functions.cpp +++ b/radio/src/gui/colorlcd/special_functions.cpp @@ -384,10 +384,23 @@ class SpecialFunctionEditPage : public Page }); grid.nextLine(); + // Patch function in case not available + if (!isAssignableFunctionAvailable(CFN_FUNC(cfn), functions)) { + auto func = 0; + while(!isAssignableFunctionAvailable(func, functions) + && (func < FUNC_MAX - 1)) { + func++; + } + if (func < FUNC_MAX - 1) { + CFN_FUNC(cfn) = func; + } + } + // Function new StaticText(window, grid.getLabelSlot(), STR_FUNC); auto functionChoice = - new Choice(window, grid.getFieldSlot(), STR_VFSWFUNC, 0, FUNC_MAX - 1, + new Choice(window, grid.getFieldSlot(), STR_VFSWFUNC, + 0, FUNC_MAX - 1, GET_DEFAULT(CFN_FUNC(cfn))); functionChoice->setSetValueHandler([=](int32_t newValue) { CFN_FUNC(cfn) = newValue;