Merge "recovery: fix UI error when directories too many [1/1]" into main am: a57eebae81

Original change: https://android-review.googlesource.com/c/platform/bootable/recovery/+/2786283

Change-Id: I09756b7c1a3f2bb620349385ff25cc3fbca3d8e0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/recovery_ui/screen_ui.cpp b/recovery_ui/screen_ui.cpp
index ee3cbb1..37e0764 100644
--- a/recovery_ui/screen_ui.cpp
+++ b/recovery_ui/screen_ui.cpp
@@ -181,7 +181,15 @@
   if (!scrollable()) {
     offset += draw_funcs_.DrawHorizontalRule(y + offset) + 4;
   }
-  for (size_t i = MenuStart(); i < MenuEnd(); ++i) {
+
+  int items_block_height = gr_fb_height() - y - offset;;
+  int total = (char_height_ + 4) * (selection() + 1);;
+  int j = 0;
+  if (total > items_block_height) {
+    j = ((total - items_block_height) / (char_height_ + 4)) + 1;
+  }
+
+  for (size_t i = (MenuStart() + j); i < MenuEnd(); ++i) {
     bool bold = false;
     if (i == selection()) {
       // Draw the highlight bar.