diff --git a/MdeModulePkg/Library/BootManagerLib/BootManager.c b/MdeModulePkg/Library/BootManagerLib/BootManager.c index dd87250743..7a8ccfe152 100644 --- a/MdeModulePkg/Library/BootManagerLib/BootManager.c +++ b/MdeModulePkg/Library/BootManagerLib/BootManager.c @@ -681,6 +681,18 @@ BootManagerCallback ( EFI_BOOT_MANAGER_LOAD_OPTION *BootOption; UINTN BootOptionCount; EFI_INPUT_KEY Key; + + if (Action == EFI_BROWSER_ACTION_FORM_OPEN) { + // + //Means enter the boot manager form. + //Update the boot manage page,because the boot option may changed. + // + if (QuestionId == 0x1212){ + UpdateBootManager(); + } + return EFI_SUCCESS; + } + if (Action != EFI_BROWSER_ACTION_CHANGED) { // // Do nothing for other UEFI Action. Only do call back when data is changed. @@ -759,10 +771,6 @@ BootManagerLibConstructor ( ); ASSERT (gBootManagerPrivate.HiiHandle != NULL); - // - // Update boot manager page - // - UpdateBootManager (); return EFI_SUCCESS; } diff --git a/MdeModulePkg/Library/BootManagerLib/BootManagerVfr.Vfr b/MdeModulePkg/Library/BootManagerLib/BootManagerVfr.Vfr index d3281f55ae..14c1f8fae3 100644 --- a/MdeModulePkg/Library/BootManagerLib/BootManagerVfr.Vfr +++ b/MdeModulePkg/Library/BootManagerLib/BootManagerVfr.Vfr @@ -32,6 +32,17 @@ formset subtitle text = STRING_TOKEN(STR_BOOT_OPTION_BANNER); subtitle text = STRING_TOKEN(STR_LAST_STRING); + // + //Add this invisable text in order to indicate enter Boot Manager form. + // + suppressif TRUE; + text + help = STRING_TOKEN(STR_LAST_STRING ), + text = STRING_TOKEN(STR_LAST_STRING ), + flags = INTERACTIVE, + key = 0x1212; + endif; + // // This is where we will dynamically add choices for the Boot Manager //