Fix menu callback issue wrt LCD_CLICKED

master
Scott Lahteine 10 years ago
parent 0cf0c20532
commit fa4c36df68

@ -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; \

Loading…
Cancel
Save