From 741407174fc82251bed298eb85d71acf928da2a4 Mon Sep 17 00:00:00 2001 From: DanielGeA <33811722+dgatf@users.noreply.github.com> Date: Fri, 22 May 2020 18:57:07 +0100 Subject: [PATCH] Fix 7598 - Wrong Flight Mode Index when exiting from Gvar Menu (128x64 display) (#7601) Fix #7598 --- radio/src/curves.cpp | 8 ++---- radio/src/gui/128x64/gui.h | 2 +- radio/src/gui/128x64/menu_model.cpp | 1 + radio/src/gui/128x64/model_curve_edit.cpp | 26 ++++++++--------- radio/src/gui/128x64/model_flightmodes.cpp | 2 +- radio/src/gui/128x64/model_gvars.cpp | 12 ++++---- radio/src/gui/128x64/model_inputs_mixes.cpp | 4 +-- radio/src/gui/212x64/gui.h | 2 +- radio/src/gui/212x64/menu_model.cpp | 1 + radio/src/gui/212x64/model_curve_edit.cpp | 26 ++++++++--------- radio/src/gui/212x64/model_outputs.cpp | 2 +- radio/src/gui/480x272/menu_model.cpp | 1 + radio/src/gui/480x272/menus.h | 3 +- radio/src/gui/480x272/model_curves.cpp | 30 ++++++++++---------- radio/src/gui/480x272/model_outputs.cpp | 2 +- radio/src/gui/common/stdlcd/model_curves.cpp | 6 ++-- 16 files changed, 64 insertions(+), 64 deletions(-) diff --git a/radio/src/curves.cpp b/radio/src/curves.cpp index 3a1bf1f27..2606611c9 100644 --- a/radio/src/curves.cpp +++ b/radio/src/curves.cpp @@ -20,8 +20,6 @@ #include "opentx.h" -uint8_t s_curveChan; - int8_t * curveEnd[MAX_CURVES]; void loadCurves() { @@ -317,8 +315,8 @@ int applyCustomCurve(int x, uint8_t idx) point_t getPoint(uint8_t i) { point_t result = {0, 0}; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); bool custom = (crv.type == CURVE_TYPE_CUSTOM); uint8_t count = 5+crv.points; if (i < count) { @@ -333,5 +331,5 @@ point_t getPoint(uint8_t i) int applyCurrentCurve(int x) { - return applyCustomCurve(x, s_curveChan); + return applyCustomCurve(x, s_currIdxSubMenu); } diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index b5ba20b5d..1e48d6746 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -216,7 +216,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; -extern uint8_t s_curveChan; +extern uint8_t s_currIdxSubMenu; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; extern int8_t s_currCh; diff --git a/radio/src/gui/128x64/menu_model.cpp b/radio/src/gui/128x64/menu_model.cpp index 4a450d143..b6f5b3bb3 100644 --- a/radio/src/gui/128x64/menu_model.cpp +++ b/radio/src/gui/128x64/menu_model.cpp @@ -45,3 +45,4 @@ void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8 } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; diff --git a/radio/src/gui/128x64/model_curve_edit.cpp b/radio/src/gui/128x64/model_curve_edit.cpp index 51294e1b3..8f606072c 100644 --- a/radio/src/gui/128x64/model_curve_edit.cpp +++ b/radio/src/gui/128x64/model_curve_edit.cpp @@ -50,8 +50,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -71,14 +71,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -89,10 +89,10 @@ void onCurveOneMenu(const char * result) void menuModelCurveOne(event_t event) { - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); - drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_curveChan+1); + drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_currIdxSubMenu+1); SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0)); @@ -108,9 +108,9 @@ void menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -131,8 +131,8 @@ void menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4 + count] = points[4 + crv.points]; for (int i = 1; i < 4 + count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index cfe15842b..b1b408b4a 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -148,7 +148,7 @@ void menuModelFlightModeOne(event_t event) drawStringWithIndex(INDENT_WIDTH, y, STR_GV, idx+1, posHorz==0 ? attr : 0); lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, ZCHAR); if (attr && editMode>0 && posHorz==0) { - s_currIdx = sub - ITEM_MODEL_FLIGHT_MODE_GV1; + s_currIdxSubMenu = sub - ITEM_MODEL_FLIGHT_MODE_GV1; editMode = 0; pushMenu(menuModelGVarOne); } diff --git a/radio/src/gui/128x64/model_gvars.cpp b/radio/src/gui/128x64/model_gvars.cpp index 4299469fe..f2e25875a 100644 --- a/radio/src/gui/128x64/model_gvars.cpp +++ b/radio/src/gui/128x64/model_gvars.cpp @@ -64,10 +64,10 @@ enum GVarFields { void menuModelGVarOne(event_t event) { - GVarData * gvar = &g_model.gvars[s_currIdx]; + GVarData * gvar = &g_model.gvars[s_currIdxSubMenu]; - drawStringWithIndex(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdx+1, 0); - drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode())); + drawStringWithIndex(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdxSubMenu+1, 0); + drawGVarValue(32*FW, 0, s_currIdxSubMenu, getGVarValue(s_currIdxSubMenu, getFlightMode())); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID); SIMPLE_SUBMENU(STR_GVARS, GVAR_FIELD_LAST); @@ -92,13 +92,13 @@ void menuModelGVarOne(event_t event) case GVAR_FIELD_MIN: lcdDrawText(0, y, STR_MIN); - drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdx, GVAR_MIN+gvar->min, LEFT|attr); + drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdxSubMenu, GVAR_MIN+gvar->min, LEFT|attr); if (attr) gvar->min = checkIncDec(event, GVAR_MIN+gvar->min, GVAR_MIN, GVAR_MAX-gvar->max, EE_MODEL) - GVAR_MIN; break; case GVAR_FIELD_MAX: lcdDrawText(0, y, STR_MAX); - drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdx, GVAR_MAX-gvar->max, LEFT|attr); + drawGVarValue(GVAR_2ND_COLUMN, y, s_currIdxSubMenu, GVAR_MAX-gvar->max, LEFT|attr); if (attr) gvar->max = GVAR_MAX - checkIncDec(event, GVAR_MAX-gvar->max, GVAR_MIN+gvar->min, GVAR_MAX, EE_MODEL); break; @@ -108,7 +108,7 @@ void menuModelGVarOne(event_t event) default: drawStringWithIndex(0, y, STR_FM, k-GVAR_FIELD_FM0); - editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdx, k-GVAR_FIELD_FM0, LEFT|attr); + editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdxSubMenu, k-GVAR_FIELD_FM0, LEFT|attr); break; } } diff --git a/radio/src/gui/128x64/model_inputs_mixes.cpp b/radio/src/gui/128x64/model_inputs_mixes.cpp index 03bdfb411..953ee64b1 100644 --- a/radio/src/gui/128x64/model_inputs_mixes.cpp +++ b/radio/src/gui/128x64/model_inputs_mixes.cpp @@ -271,7 +271,7 @@ void menuModelExpoOne(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1); if (ed->curveParam) ed->curveMode = MODE_CURVE; if (ed->curveParam>=CURVE_BASE && event==EVT_KEY_LONG(KEY_ENTER)) { - s_curveChan = ed->curveParam - CURVE_BASE; + s_currIdxSubMenu = ed->curveParam - CURVE_BASE; pushMenu(menuModelCurveOne); } } @@ -442,7 +442,7 @@ void menuModelMixOne(event_t event) drawCurveName(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr); if (attr) { if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){ - s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); + s_currIdxSubMenu = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); pushMenu(menuModelCurveOne); } else { diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index 20dc6b09b..5968bd320 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -229,7 +229,6 @@ swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t e void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t event); -extern uint8_t s_curveChan; void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); extern uint8_t editNameCursorPos; @@ -247,6 +246,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; +extern uint8_t s_currIdxSubMenu; extern uint8_t s_maxLines; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index 402189fb5..f8058499b 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -67,3 +67,4 @@ void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_ } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; diff --git a/radio/src/gui/212x64/model_curve_edit.cpp b/radio/src/gui/212x64/model_curve_edit.cpp index 3d3b083a8..681480602 100644 --- a/radio/src/gui/212x64/model_curve_edit.cpp +++ b/radio/src/gui/212x64/model_curve_edit.cpp @@ -52,8 +52,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -73,14 +73,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -92,10 +92,10 @@ void onCurveOneMenu(const char * result) void menuModelCurveOne(event_t event) { static uint8_t pointsOfs = 0; - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); - drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_curveChan+1); + drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_currIdxSubMenu+1); lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y"); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); @@ -114,9 +114,9 @@ void menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + crv.points, i)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -137,8 +137,8 @@ void menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4 + count] = points[4 + crv.points]; for (int i = 1; i < 4 + count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(getCurveX(5 + count, i)), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret * (crv.type == CURVE_TYPE_CUSTOM ? 2 : 1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) diff --git a/radio/src/gui/212x64/model_outputs.cpp b/radio/src/gui/212x64/model_outputs.cpp index c1cd1de04..bc5f34d43 100644 --- a/radio/src/gui/212x64/model_outputs.cpp +++ b/radio/src/gui/212x64/model_outputs.cpp @@ -212,7 +212,7 @@ void menuModelLimits(event_t event) case ITEM_LIMITS_CURVE: drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr); if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { - s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); + s_currIdxSubMenu = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); pushMenu(menuModelCurveOne); } if (active) { diff --git a/radio/src/gui/480x272/menu_model.cpp b/radio/src/gui/480x272/menu_model.cpp index 761bc9180..09ce6523f 100644 --- a/radio/src/gui/480x272/menu_model.cpp +++ b/radio/src/gui/480x272/menu_model.cpp @@ -151,6 +151,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui } uint8_t s_currIdx; +uint8_t s_currIdxSubMenu; void copySelection(char * dst, const char * src, uint8_t size) { diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index f82baeb14..e9f4e7008 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -437,8 +437,6 @@ void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event, uin uint8_t editDelay(coord_t x, coord_t y, event_t event, uint8_t attr, uint8_t delay); void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); -extern uint8_t s_curveChan; - enum { WARNING_TYPE_WAIT, @@ -461,6 +459,7 @@ extern uint8_t s_copyMode; extern int8_t s_copySrcRow; extern int8_t s_copyTgtOfs; extern uint8_t s_currIdx; +extern uint8_t s_currIdxSubMenu; extern int8_t s_currCh; extern uint8_t s_copySrcIdx; extern uint8_t s_copySrcCh; diff --git a/radio/src/gui/480x272/model_curves.cpp b/radio/src/gui/480x272/model_curves.cpp index 3abf03ddb..a7f8adf29 100644 --- a/radio/src/gui/480x272/model_curves.cpp +++ b/radio/src/gui/480x272/model_curves.cpp @@ -52,8 +52,8 @@ void runPopupCurvePreset(event_t event) if (warningResult) { warningResult = 0; - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); int k = 25 * reusableBuffer.curveEdit.preset; int dx = 2000 / (5+crv.points-1); for (uint8_t i=0; i<5+crv.points; i++) { @@ -73,14 +73,14 @@ void onCurveOneMenu(const char * result) POPUP_INPUT(STR_PRESET, runPopupCurvePreset); } else if (result == STR_MIRROR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = -points[i]; } else if (result == STR_CLEAR) { - CurveInfo & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveInfo & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); for (int i=0; i<5+crv.points; i++) points[i] = 0; if (crv.type == CURVE_TYPE_CUSTOM) { @@ -105,11 +105,11 @@ enum MenuModelCurveOneItems { bool menuModelCurveOne(event_t event) { static uint8_t pointsOfs = 0; - CurveData & crv = g_model.curves[s_curveChan]; - int8_t * points = curveAddress(s_curveChan); + CurveData & crv = g_model.curves[s_currIdxSubMenu]; + int8_t * points = curveAddress(s_currIdxSubMenu); SUBMENU_WITH_OPTIONS(STR_MENUCURVE, ICON_MODEL_CURVES, IS_COORDS1_LINE_NEEDED() ? 6 : 5, OPTION_MENU_NO_FOOTER, { 0, 0, 0, 0, uint8_t(5+crv.points-1), uint8_t(5+crv.points-1) }); - drawStringWithIndex(50, 3+FH, STR_CV, s_curveChan+1, MENU_TITLE_COLOR); + drawStringWithIndex(50, 3+FH, STR_CV, s_currIdxSubMenu+1, MENU_TITLE_COLOR); lcdDrawSolidFilledRect(0, MENU_FOOTER_TOP, 250, MENU_FOOTER_HEIGHT, HEADER_BGCOLOR); if (IS_COORDS1_LINE_NEEDED() && menuVerticalPosition == ITEM_CURVE_COORDS1) { @@ -139,9 +139,9 @@ bool menuModelCurveOne(event_t event) uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); if (newType != crv.type) { for (int i = 1; i < 4 + crv.points; i++) { - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i * 200 / (4 + crv.points)), s_curveChan)); + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i * 200 / (4 + crv.points)), s_currIdxSubMenu)); } - if (moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret > 0 ? 3 + crv.points : -3 - crv.points)) { if (newType == CURVE_TYPE_CUSTOM) { resetCustomCurveX(points, 5 + crv.points); } @@ -161,8 +161,8 @@ bool menuModelCurveOne(event_t event) newPoints[0] = points[0]; newPoints[4+count] = points[4+crv.points]; for (int i=1; i<4+count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(-RESX + (i * 2 * RESX) / (4 + count), s_curveChan)); - if (moveCurve(s_curveChan, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM ? 2 :1))) { + newPoints[i] = calcRESXto100(applyCustomCurve(-RESX + (i * 2 * RESX) / (4 + count), s_currIdxSubMenu)); + if (moveCurve(s_currIdxSubMenu, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM ? 2 :1))) { for (int i = 0; i < 5 + count; i++) { points[i] = newPoints[i]; if (crv.type == CURVE_TYPE_CUSTOM && i != 0 && i != 4 + count) @@ -298,7 +298,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag drawCurveName(lcdNextPos+10, y, curve.value, (menuHorizontalPosition==1 ? attr : 0)); if (attr && menuHorizontalPosition==1) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { - s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); + s_currIdxSubMenu = (curve.value<0 ? -curve.value-1 : curve.value-1); pushMenu(menuModelCurveOne); } else { @@ -316,7 +316,7 @@ bool menuModelCurvesAll(event_t event) { SIMPLE_MENU(STR_MENUCURVES, MODEL_ICONS, menuTabModel, MENU_MODEL_CURVES, MAX_CURVES); - s_curveChan = menuVerticalPosition; + s_currIdxSubMenu = menuVerticalPosition; switch (event) { case EVT_KEY_BREAK(KEY_ENTER): diff --git a/radio/src/gui/480x272/model_outputs.cpp b/radio/src/gui/480x272/model_outputs.cpp index 3dd2d8f21..300f8909b 100644 --- a/radio/src/gui/480x272/model_outputs.cpp +++ b/radio/src/gui/480x272/model_outputs.cpp @@ -201,7 +201,7 @@ bool menuModelLimits(event_t event) case ITEM_LIMITS_CURVE: drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr); if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { - s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); + s_currIdxSubMenu = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); pushMenu(menuModelCurveOne); } if (active) { diff --git a/radio/src/gui/common/stdlcd/model_curves.cpp b/radio/src/gui/common/stdlcd/model_curves.cpp index b650a96ab..6fd7c1d0b 100644 --- a/radio/src/gui/common/stdlcd/model_curves.cpp +++ b/radio/src/gui/common/stdlcd/model_curves.cpp @@ -60,7 +60,7 @@ void menuModelCurvesAll(event_t event) #endif case EVT_KEY_FIRST(KEY_ENTER): if (CURVE_SELECTED() && !READ_ONLY()) { - s_curveChan = sub; + s_currIdxSubMenu = sub; pushMenu(menuModelCurveOne); } break; @@ -93,7 +93,7 @@ void menuModelCurvesAll(event_t event) } if (CURVE_SELECTED()) { - s_curveChan = sub; + s_currIdxSubMenu = sub; #if LCD_W >= 212 drawCurve(23); #else @@ -142,7 +142,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlag drawCurveName(x, y, curve.value, flags); if (active && menuHorizontalPosition==1) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { - s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); + s_currIdxSubMenu = (curve.value<0 ? -curve.value-1 : curve.value-1); pushMenu(menuModelCurveOne); } else {