Fix menu callback issue wrt LCD_CLICKED
This commit is contained in:
parent
0cf0c20532
commit
fa4c36df68
1 changed files with 5 additions and 4 deletions
|
@ -1025,19 +1025,20 @@ void lcd_sdcard_menu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
||||||
void menu_edit_ ## _name () { \
|
bool menu_edit_ ## _name () { \
|
||||||
|
bool isClicked = LCD_CLICKED;
|
||||||
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
|
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
|
||||||
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
|
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
|
||||||
if (lcdDrawUpdate) \
|
if (lcdDrawUpdate) \
|
||||||
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
|
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
|
||||||
if (LCD_CLICKED) { \
|
if (isClicked) { \
|
||||||
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
|
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
|
||||||
lcd_goto_menu(prevMenu, prevEncoderPosition); \
|
lcd_goto_menu(prevMenu, prevEncoderPosition); \
|
||||||
} \
|
} \
|
||||||
|
return isClicked;
|
||||||
} \
|
} \
|
||||||
void menu_edit_callback_ ## _name () { \
|
void menu_edit_callback_ ## _name () { \
|
||||||
menu_edit_ ## _name (); \
|
if (menu_edit_ ## _name ()) (*callbackFunc)(); \
|
||||||
if (LCD_CLICKED) (*callbackFunc)(); \
|
|
||||||
} \
|
} \
|
||||||
static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
|
static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
|
||||||
prevMenu = currentMenu; \
|
prevMenu = currentMenu; \
|
||||||
|
|
Reference in a new issue