diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c index 4f814990bb..5c8d676186 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c @@ -1946,6 +1946,7 @@ UiDisplayMenu ( // Highlight not specified, fetch it from cached menu // Selection->QuestionId = CurrentMenu->QuestionId; + Selection->Sequence = CurrentMenu->Sequence; } // @@ -2317,7 +2318,9 @@ UiDisplayMenu ( NewPos = gMenuOption.ForwardLink; SavedMenuOption = MENU_OPTION_FROM_LINK (NewPos); - while (SavedMenuOption->ThisTag->QuestionId != Selection->QuestionId && NewPos->ForwardLink != &gMenuOption) { + while ((SavedMenuOption->ThisTag->QuestionId != Selection->QuestionId || + SavedMenuOption->Sequence != Selection->Sequence) && + NewPos->ForwardLink != &gMenuOption) { NewPos = NewPos->ForwardLink; SavedMenuOption = MENU_OPTION_FROM_LINK (NewPos); } @@ -2453,6 +2456,7 @@ UiDisplayMenu ( // Record highlight for current menu // CurrentMenu->QuestionId = Statement->QuestionId; + CurrentMenu->Sequence = MenuOption->Sequence; // // Set reverse attribute diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.h b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.h index 181b9a43dc..0acec825cf 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.h +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.h @@ -87,6 +87,7 @@ typedef struct { EFI_GUID FormSetGuid; UINT16 FormId; UINT16 QuestionId; + UINTN Sequence; // used for time/date only. UINTN TopRow; UINTN BottomRow; @@ -163,6 +164,7 @@ struct _UI_MENU_LIST { EFI_GUID FormSetGuid; UINT16 FormId; UINT16 QuestionId; + UINTN Sequence; // used for time/date only. UI_MENU_LIST *Parent; LIST_ENTRY ChildListHead;