Skip to content

Commit 3df7518

Browse files
committed
🚸 Fix TFT GLCD "Select from Media" glitch
1 parent 7ee745b commit 3df7518

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

Marlin/src/lcd/marlinui.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,7 @@ void MarlinUI::init() {
11141114
#if MARLINUI_SCROLL_NAME
11151115
// If scrolling of long file names is enabled and we are in the sd card menu,
11161116
// cause a refresh to occur until all the text has scrolled into view.
1117-
if (currentScreen == menu_media && filename_scroll_max && !lcd_status_update_delay--) {
1117+
if (currentScreen == menu_media_filelist && filename_scroll_max && !lcd_status_update_delay--) {
11181118
lcd_status_update_delay = ++filename_scroll_pos >= filename_scroll_max ? 12 : 4; // Long delay at end and start
11191119
if (filename_scroll_pos > filename_scroll_max) filename_scroll_pos = 0;
11201120
refresh(LCDVIEW_REDRAW_NOW);

Marlin/src/lcd/menu/menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ void menu_main();
211211
void menu_move();
212212

213213
#if HAS_MEDIA
214+
void menu_media_filelist();
214215
void menu_media();
215216
#endif
216217

Marlin/src/lcd/menu/menu_media.cpp

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void lcd_sd_updir() {
4545

4646
void MarlinUI::reselect_last_file() {
4747
if (sd_encoder_position == 0xFFFF) return;
48-
goto_screen(menu_media, sd_encoder_position, sd_top_line, sd_items);
48+
goto_screen(menu_media_filelist, sd_encoder_position, sd_top_line, sd_items);
4949
sd_encoder_position = 0xFFFF;
5050
defer_status_screen();
5151
}
@@ -101,6 +101,29 @@ class MenuItem_sdfolder : public MenuItem_sdbase {
101101
}
102102
};
103103

104+
#if HAS_MULTI_VOLUME
105+
void menu_media_select() {
106+
START_MENU();
107+
BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK));
108+
#if ENABLED(VOLUME_SD_ONBOARD)
109+
ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); });
110+
#endif
111+
#if ENABLED(VOLUME_USB_FLASH_DRIVE)
112+
ACTION_ITEM(MSG_USB_DISK, []{ card.changeMedia(&card.media_driver_usbFlash); card.mount(); ui.goto_screen(menu_media_filelist); });
113+
#endif
114+
END_MENU();
115+
}
116+
#endif
117+
118+
/**
119+
* "Select From Media" menu item. Depending on single or multiple drives:
120+
* - menu_media_filelist - List files on the current media
121+
* - menu_media_select - Select one of the attached drives, then go to the file list
122+
*/
123+
void menu_media() {
124+
ui.goto_screen(TERN(HAS_MULTI_VOLUME, menu_media_select, menu_media_filelist));
125+
}
126+
104127
void menu_media_filelist() {
105128
ui.encoder_direction_menus();
106129

@@ -113,7 +136,7 @@ void menu_media_filelist() {
113136

114137
START_MENU();
115138
#if HAS_MULTI_VOLUME
116-
ACTION_ITEM(MSG_BACK, []{ ui.goto_screen(menu_media); });
139+
ACTION_ITEM(MSG_BACK, []{ ui.goto_screen(menu_media_select); });
117140
#else
118141
BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK));
119142
#endif
@@ -141,22 +164,4 @@ void menu_media_filelist() {
141164
END_MENU();
142165
}
143166

144-
#if HAS_MULTI_VOLUME
145-
void menu_media_select() {
146-
START_MENU();
147-
BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK));
148-
#if ENABLED(VOLUME_SD_ONBOARD)
149-
ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); });
150-
#endif
151-
#if ENABLED(VOLUME_USB_FLASH_DRIVE)
152-
ACTION_ITEM(MSG_USB_DISK, []{ card.changeMedia(&card.media_driver_usbFlash); card.mount(); ui.goto_screen(menu_media_filelist); });
153-
#endif
154-
END_MENU();
155-
}
156-
#endif
157-
158-
void menu_media() {
159-
TERN(HAS_MULTI_VOLUME, menu_media_select, menu_media_filelist)();
160-
}
161-
162167
#endif // HAS_MARLINUI_MENU && HAS_MEDIA

0 commit comments

Comments
 (0)