]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - GRUB2/MOD_SRC/grub-2.04/grub-core/gfxmenu/view.c
update for scroll menu text
[Ventoy.git] / GRUB2 / MOD_SRC / grub-2.04 / grub-core / gfxmenu / view.c
index 51fb1752e57370c9198ae45d3a5322afb98eaf59..b69f0991c7a90627817654427e2bdf310cf9b12f 100644 (file)
@@ -437,16 +437,21 @@ grub_gfxmenu_scroll_chosen_entry (void *data, int diren)
   grub_gfxmenu_view_t view = data;
   const char *item_title;
   int off;
+  int max;
 
   if (!view->menu->size)
     return;
 
   item_title = grub_menu_get_entry (view->menu, view->selected)->title;
   off = view->menu_title_offset[view->selected] + diren;
-
-  if (off < 0
-      || off > grub_utf8_get_num_code (item_title, grub_strlen(item_title)))
-    return;
+  max = grub_utf8_get_num_code (item_title, grub_strlen(item_title));
+
+  if (diren == 1000000)
+    off = (max >= 20) ? (max - 20) : 0;
+  else if (off < 0)
+    off = 0;
+  else if (off > max)
+    off = max;
 
   view->menu_title_offset[view->selected] = off;
   grub_gfxmenu_redraw_menu (view);