From f90c075d1f06b4e336c9a20cd28f9aec7b5a0972 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 26 Nov 2017 01:14:18 -0600
Subject: [PATCH] SD Menu patches

---
 Marlin/src/lcd/ultralcd.cpp  | 5 +++--
 Marlin/src/sd/cardreader.cpp | 7 ++++---
 Marlin/src/sd/cardreader.h   | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index b0b4c15e1b..f52aec8e95 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -3743,7 +3743,7 @@ void kill_screen(const char* lcd_msg) {
     #endif
 
     void lcd_sd_updir() {
-      card.updir();
+      encoderPosition = card.updir() ? ENCODER_STEPS_PER_MENU_ITEM : 0;
       encoderTopLine = 0;
       screen_changed = true;
       lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
@@ -4444,7 +4444,8 @@ void kill_screen(const char* lcd_msg) {
     void menu_action_sddirectory(const char* filename, char* longFilename) {
       UNUSED(longFilename);
       card.chdir(filename);
-      encoderPosition = 0;
+      encoderTopLine = 0;
+      encoderPosition = 2 * ENCODER_STEPS_PER_MENU_ITEM;
       screen_changed = true;
       lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
     }
diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp
index 663b788321..92954d8d7d 100644
--- a/Marlin/src/sd/cardreader.cpp
+++ b/Marlin/src/sd/cardreader.cpp
@@ -631,13 +631,14 @@ void CardReader::chdir(const char * relpath) {
   }
 }
 
-void CardReader::updir() {
-  if (workDirDepth > 0) {                                           // At least 1 dir has been saved
-    workDir = --workDirDepth ? workDirParents[workDirDepth] : root; // Use parent, or root if none
+int8_t CardReader::updir() {
+  if (workDirDepth > 0) {                                               // At least 1 dir has been saved
+    workDir = --workDirDepth ? workDirParents[workDirDepth - 1] : root; // Use parent, or root if none
     #if ENABLED(SDCARD_SORT_ALPHA)
       presort();
     #endif
   }
+  return workDirDepth;
 }
 
 #if ENABLED(SDCARD_SORT_ALPHA)
diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h
index 5d10e34a68..c8e542b75d 100644
--- a/Marlin/src/sd/cardreader.h
+++ b/Marlin/src/sd/cardreader.h
@@ -63,7 +63,7 @@ public:
 
   void ls();
   void chdir(const char *relpath);
-  void updir();
+  int8_t updir();
   void setroot();
 
   uint16_t get_num_Files();
-- 
GitLab