diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c index 264bee6465..8b7344f42a 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c @@ -2696,14 +2696,19 @@ UiDisplayMenu ( TopOfScreen = NewPos; } - Difference = MoveToNextStatement (TRUE, &NewPos); - if ((INTN) MenuOption->Row - (INTN) DistanceValue < (INTN) TopRow) { + Difference = MoveToNextStatement (TRUE, &NewPos); + PreviousMenuOption = MENU_OPTION_FROM_LINK (NewPos); + DistanceValue += PreviousMenuOption->Skip; + + if ((INTN) MenuOption->Row - (INTN) DistanceValue < (INTN) TopRow) { if (Difference > 0) { // // Previous focus MenuOption is above the TopOfScreen, so we need to scroll // TopOfScreen = NewPos; Repaint = TRUE; + SkipValue = 0; + OldSkipValue = 0; } } if (Difference < 0) {