When returning selectable menu, should return the menu in current form, the codes miss to do the check. Now returning the selectable menu behind the codes "if ((UINTN) Distance + NextMenuOption->Skip > GapToTop)". Then can cover the check, can return the menu correctly.
Cc: Liming Gao <liming....@intel.com> Cc: Eric Dong <eric.d...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan...@intel.com> --- MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c b/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c index c2cffec..316e2e3 100644 --- a/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c +++ b/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c @@ -1048,25 +1048,28 @@ MoveToNextStatement ( // if (NextMenuOption->Row == 0) { UpdateOptionSkipLines (NextMenuOption); } - if (IsSelectable (NextMenuOption)) { - break; - } - // - // In this case, still can't find the selectable menu, + // Check whether the menu is beyond current showing form, // return the first one beyond the showing form. // if ((UINTN) Distance + NextMenuOption->Skip > GapToTop) { if (FindInForm) { NextMenuOption = PreMenuOption; } break; } + // + // return the selectable menu in the showing form. + // + if (IsSelectable (NextMenuOption)) { + break; + } + Distance += NextMenuOption->Skip; // // Arrive at begin of the menu list. // -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel