summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDandan Bi <dandan.bi@intel.com>2016-11-22 10:39:38 +0800
committerStar Zeng <star.zeng@intel.com>2016-11-23 10:11:47 +0800
commit0265811dbe56cf46fb3c152b2ccdefd8fb47a170 (patch)
tree6dcf7263e2310a992c85d5d202854302f8b04123
parentb857bf48133933a72f6edcd9bac3214799e093de (diff)
downloadedk2-0265811dbe56cf46fb3c152b2ccdefd8fb47a170.tar.gz
edk2-0265811dbe56cf46fb3c152b2ccdefd8fb47a170.tar.bz2
edk2-0265811dbe56cf46fb3c152b2ccdefd8fb47a170.zip
MdeModulePkg/DisplayEngine: Return the selectable menu correctly
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. https://bugzilla.tianocore.org/show_bug.cgi?id=232 Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
-rw-r--r--MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c b/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c
index c2cffecbe9..316e2e3705 100644
--- a/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c
+++ b/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c
@@ -1050,12 +1050,8 @@ MoveToNextStatement (
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) {
@@ -1065,6 +1061,13 @@ MoveToNextStatement (
break;
}
+ //
+ // return the selectable menu in the showing form.
+ //
+ if (IsSelectable (NextMenuOption)) {
+ break;
+ }
+
Distance += NextMenuOption->Skip;
//