From 0d35b1d0b844f50bba63f7dbadd372a40261a819 Mon Sep 17 00:00:00 2001 From: Lionello Lunesu Date: Mon, 24 Nov 2014 22:51:16 +0800 Subject: [PATCH] Allow negative values in menus --- Marlin/ultralcd.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 734c859d02..48bc7c3b04 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1004,15 +1004,15 @@ void lcd_sdcard_menu() #define menu_edit_type(_type, _name, _strFunc, scale) \ void menu_edit_ ## _name () \ { \ - if ((int32_t)encoderPosition < minEditValue) \ - encoderPosition = minEditValue; \ + if ((int32_t)encoderPosition < 0) \ + encoderPosition = 0; \ if ((int32_t)encoderPosition > maxEditValue) \ encoderPosition = maxEditValue; \ if (lcdDrawUpdate) \ - lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \ + lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \ if (LCD_CLICKED) \ { \ - *((_type*)editValue) = ((_type)encoderPosition) / scale; \ + *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \ lcd_quick_feedback(); \ currentMenu = prevMenu; \ encoderPosition = prevEncoderPosition; \ @@ -1020,15 +1020,15 @@ void lcd_sdcard_menu() } \ void menu_edit_callback_ ## _name () \ { \ - if ((int32_t)encoderPosition < minEditValue) \ - encoderPosition = minEditValue; \ + if ((int32_t)encoderPosition < 0) \ + encoderPosition = 0; \ if ((int32_t)encoderPosition > maxEditValue) \ encoderPosition = maxEditValue; \ if (lcdDrawUpdate) \ - lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \ + lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \ if (LCD_CLICKED) \ { \ - *((_type*)editValue) = ((_type)encoderPosition) / scale; \ + *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \ lcd_quick_feedback(); \ currentMenu = prevMenu; \ encoderPosition = prevEncoderPosition; \ @@ -1046,8 +1046,8 @@ void lcd_sdcard_menu() editLabel = pstr; \ editValue = ptr; \ minEditValue = minValue * scale; \ - maxEditValue = maxValue * scale; \ - encoderPosition = (*ptr) * scale; \ + maxEditValue = maxValue * scale - minEditValue; \ + encoderPosition = (*ptr) * scale - minEditValue; \ }\ static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \ { \ @@ -1060,8 +1060,8 @@ void lcd_sdcard_menu() editLabel = pstr; \ editValue = ptr; \ minEditValue = minValue * scale; \ - maxEditValue = maxValue * scale; \ - encoderPosition = (*ptr) * scale; \ + maxEditValue = maxValue * scale - minEditValue; \ + encoderPosition = (*ptr) * scale - minEditValue; \ callbackFunc = callback;\ } menu_edit_type(int, int3, itostr3, 1) @@ -1183,7 +1183,7 @@ void lcd_init() #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register pinMode (SR_DATA_PIN, OUTPUT); pinMode (SR_CLK_PIN, OUTPUT); - #elif defined(SHIFT_CLK) + #elif defined(SHIFT_CLK) pinMode(SHIFT_CLK,OUTPUT); pinMode(SHIFT_LD,OUTPUT); pinMode(SHIFT_EN,OUTPUT);