diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index 2ba71a726..3e7225397 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -528,13 +528,14 @@ void lcd_print(const char* s) while (*s) lcd_write(*(s++)); } -void lcd_print_pad(const char* s, uint8_t len) +char lcd_print_pad(const char* s, uint8_t len) { while (len && *s) { lcd_write(*(s++)); --len; } lcd_space(len); + return *s; } void lcd_print(char c, int base) diff --git a/Firmware/lcd.h b/Firmware/lcd.h index b7a8d2836..fd209b755 100644 --- a/Firmware/lcd.h +++ b/Firmware/lcd.h @@ -53,7 +53,7 @@ extern void lcd_printNumber(unsigned long n, uint8_t base); extern void lcd_printFloat(double number, uint8_t digits); extern void lcd_print(const char*); -extern void lcd_print_pad(const char*, uint8_t len); +extern char lcd_print_pad(const char* s, uint8_t len); extern void lcd_print(char, int = 0); extern void lcd_print(unsigned char, int = 0); extern void lcd_print(int, int = 10); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d636a0a14..eccbf8deb 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -585,20 +585,11 @@ void lcdui_print_status_line(void) { { // If printing from SD, show what we are printing const char* longFilenameOLD = (card.longFilename[0] ? card.longFilename : card.filename); - if(strlen(longFilenameOLD) > LCD_WIDTH) { - uint8_t gh = scrollstuff; - while (((gh - scrollstuff) < LCD_WIDTH)) { - lcd_putc_at(gh - scrollstuff, 3, longFilenameOLD[gh - 1]); - if (longFilenameOLD[gh] == '\0') { - scrollstuff = 0; - break; // Exit while loop - } else { - gh++; - } - } + if( lcd_print_pad(&longFilenameOLD[scrollstuff], LCD_WIDTH) ) + { scrollstuff++; } else { - lcd_print_pad(longFilenameOLD, LCD_WIDTH); + scrollstuff = 0; } } else { // Otherwise check for other special events switch (custom_message_type) {