Browse Source

Merge pull request #1153 from xinfab/negative_values_in_menu

Negative values in menu
Bo Herrmannsen 10 years ago
parent
commit
0b310ab6c5
1 changed files with 13 additions and 13 deletions
  1. 13
    13
      Marlin/ultralcd.cpp

+ 13
- 13
Marlin/ultralcd.cpp View File

1041
 #define menu_edit_type(_type, _name, _strFunc, scale) \
1041
 #define menu_edit_type(_type, _name, _strFunc, scale) \
1042
     void menu_edit_ ## _name () \
1042
     void menu_edit_ ## _name () \
1043
     { \
1043
     { \
1044
-        if ((int32_t)encoderPosition < minEditValue) \
1045
-            encoderPosition = minEditValue; \
1044
+        if ((int32_t)encoderPosition < 0) \
1045
+            encoderPosition = 0; \
1046
         if ((int32_t)encoderPosition > maxEditValue) \
1046
         if ((int32_t)encoderPosition > maxEditValue) \
1047
             encoderPosition = maxEditValue; \
1047
             encoderPosition = maxEditValue; \
1048
         if (lcdDrawUpdate) \
1048
         if (lcdDrawUpdate) \
1049
-            lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \
1049
+            lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1050
         if (LCD_CLICKED) \
1050
         if (LCD_CLICKED) \
1051
         { \
1051
         { \
1052
-            *((_type*)editValue) = ((_type)encoderPosition) / scale; \
1052
+            *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1053
             lcd_quick_feedback(); \
1053
             lcd_quick_feedback(); \
1054
             currentMenu = prevMenu; \
1054
             currentMenu = prevMenu; \
1055
             encoderPosition = prevEncoderPosition; \
1055
             encoderPosition = prevEncoderPosition; \
1057
     } \
1057
     } \
1058
     void menu_edit_callback_ ## _name () \
1058
     void menu_edit_callback_ ## _name () \
1059
     { \
1059
     { \
1060
-        if ((int32_t)encoderPosition < minEditValue) \
1061
-            encoderPosition = minEditValue; \
1060
+        if ((int32_t)encoderPosition < 0) \
1061
+            encoderPosition = 0; \
1062
         if ((int32_t)encoderPosition > maxEditValue) \
1062
         if ((int32_t)encoderPosition > maxEditValue) \
1063
             encoderPosition = maxEditValue; \
1063
             encoderPosition = maxEditValue; \
1064
         if (lcdDrawUpdate) \
1064
         if (lcdDrawUpdate) \
1065
-            lcd_implementation_drawedit(editLabel, _strFunc(((_type)encoderPosition) / scale)); \
1065
+            lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1066
         if (LCD_CLICKED) \
1066
         if (LCD_CLICKED) \
1067
         { \
1067
         { \
1068
-            *((_type*)editValue) = ((_type)encoderPosition) / scale; \
1068
+            *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1069
             lcd_quick_feedback(); \
1069
             lcd_quick_feedback(); \
1070
             currentMenu = prevMenu; \
1070
             currentMenu = prevMenu; \
1071
             encoderPosition = prevEncoderPosition; \
1071
             encoderPosition = prevEncoderPosition; \
1083
         editLabel = pstr; \
1083
         editLabel = pstr; \
1084
         editValue = ptr; \
1084
         editValue = ptr; \
1085
         minEditValue = minValue * scale; \
1085
         minEditValue = minValue * scale; \
1086
-        maxEditValue = maxValue * scale; \
1087
-        encoderPosition = (*ptr) * scale; \
1086
+        maxEditValue = maxValue * scale - minEditValue; \
1087
+        encoderPosition = (*ptr) * scale - minEditValue; \
1088
     }\
1088
     }\
1089
     static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
1089
     static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
1090
     { \
1090
     { \
1097
         editLabel = pstr; \
1097
         editLabel = pstr; \
1098
         editValue = ptr; \
1098
         editValue = ptr; \
1099
         minEditValue = minValue * scale; \
1099
         minEditValue = minValue * scale; \
1100
-        maxEditValue = maxValue * scale; \
1101
-        encoderPosition = (*ptr) * scale; \
1100
+        maxEditValue = maxValue * scale - minEditValue; \
1101
+        encoderPosition = (*ptr) * scale - minEditValue; \
1102
         callbackFunc = callback;\
1102
         callbackFunc = callback;\
1103
     }
1103
     }
1104
 menu_edit_type(int, int3, itostr3, 1)
1104
 menu_edit_type(int, int3, itostr3, 1)
1220
   #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register
1220
   #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register
1221
      pinMode (SR_DATA_PIN, OUTPUT);
1221
      pinMode (SR_DATA_PIN, OUTPUT);
1222
      pinMode (SR_CLK_PIN, OUTPUT);
1222
      pinMode (SR_CLK_PIN, OUTPUT);
1223
-  #elif defined(SHIFT_CLK) 
1223
+  #elif defined(SHIFT_CLK)
1224
      pinMode(SHIFT_CLK,OUTPUT);
1224
      pinMode(SHIFT_CLK,OUTPUT);
1225
      pinMode(SHIFT_LD,OUTPUT);
1225
      pinMode(SHIFT_LD,OUTPUT);
1226
      pinMode(SHIFT_EN,OUTPUT);
1226
      pinMode(SHIFT_EN,OUTPUT);

Loading…
Cancel
Save