|
|
@ -238,15 +238,15 @@ uint16_t max_display_update_time = 0;
|
|
|
|
encoderRateMultiplierEnabled = false; \
|
|
|
|
encoderRateMultiplierEnabled = false; \
|
|
|
|
if (encoderPosition > 0x8000) encoderPosition = 0; \
|
|
|
|
if (encoderPosition > 0x8000) encoderPosition = 0; \
|
|
|
|
static int8_t _countedItems = 0; \
|
|
|
|
static int8_t _countedItems = 0; \
|
|
|
|
int8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
|
|
|
|
int8_t encoderLine = encoderPosition / (ENCODER_STEPS_PER_MENU_ITEM); \
|
|
|
|
if (_countedItems > 0 && encoderLine >= _countedItems - LIMIT) { \
|
|
|
|
if (_countedItems > 0 && encoderLine >= _countedItems - (LIMIT)) { \
|
|
|
|
encoderLine = max(0, _countedItems - LIMIT); \
|
|
|
|
encoderLine = max(0, _countedItems - (LIMIT)); \
|
|
|
|
encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM); \
|
|
|
|
encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM); \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define SCREEN_OR_MENU_LOOP() \
|
|
|
|
#define SCREEN_OR_MENU_LOOP() \
|
|
|
|
int8_t _menuLineNr = encoderTopLine, _thisItemNr; \
|
|
|
|
int8_t _menuLineNr = encoderTopLine, _thisItemNr; \
|
|
|
|
for (int8_t _lcdLineNr = 0; _lcdLineNr < LCD_HEIGHT - TALL_FONT_CORRECTION; _lcdLineNr++, _menuLineNr++) { \
|
|
|
|
for (int8_t _lcdLineNr = 0; _lcdLineNr < LCD_HEIGHT - (TALL_FONT_CORRECTION); _lcdLineNr++, _menuLineNr++) { \
|
|
|
|
_thisItemNr = 0
|
|
|
|
_thisItemNr = 0
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -257,7 +257,7 @@ uint16_t max_display_update_time = 0;
|
|
|
|
* Scroll as-needed to keep the selected line in view.
|
|
|
|
* Scroll as-needed to keep the selected line in view.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
#define START_SCREEN() \
|
|
|
|
#define START_SCREEN() \
|
|
|
|
START_SCREEN_OR_MENU(LCD_HEIGHT - TALL_FONT_CORRECTION); \
|
|
|
|
START_SCREEN_OR_MENU(LCD_HEIGHT - (TALL_FONT_CORRECTION)); \
|
|
|
|
encoderTopLine = encoderLine; \
|
|
|
|
encoderTopLine = encoderLine; \
|
|
|
|
bool _skipStatic = false; \
|
|
|
|
bool _skipStatic = false; \
|
|
|
|
SCREEN_OR_MENU_LOOP()
|
|
|
|
SCREEN_OR_MENU_LOOP()
|
|
|
@ -266,8 +266,8 @@ uint16_t max_display_update_time = 0;
|
|
|
|
START_SCREEN_OR_MENU(1); \
|
|
|
|
START_SCREEN_OR_MENU(1); \
|
|
|
|
screen_changed = false; \
|
|
|
|
screen_changed = false; \
|
|
|
|
NOMORE(encoderTopLine, encoderLine); \
|
|
|
|
NOMORE(encoderTopLine, encoderLine); \
|
|
|
|
if (encoderLine >= encoderTopLine + LCD_HEIGHT - TALL_FONT_CORRECTION) { \
|
|
|
|
if (encoderLine >= encoderTopLine + LCD_HEIGHT - (TALL_FONT_CORRECTION)) { \
|
|
|
|
encoderTopLine = encoderLine - (LCD_HEIGHT - TALL_FONT_CORRECTION - 1); \
|
|
|
|
encoderTopLine = encoderLine - (LCD_HEIGHT - (TALL_FONT_CORRECTION) - 1); \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
bool _skipStatic = true; \
|
|
|
|
bool _skipStatic = true; \
|
|
|
|
SCREEN_OR_MENU_LOOP()
|
|
|
|
SCREEN_OR_MENU_LOOP()
|
|
|
|