Merged in the bug fixes from EDK I.

*** Press F9 in Uefi64 FrontPage shouldnot enter sub-menu 
** [FT] Some UI error on multiple platforms on framework_20080811
** [FT] UI test of How tall are you(Hex) on framework_20080811


To improve backward compatibility, add gEfiPrint2ProtocolGuid and rename gEfiPrintProtocolGuid to the previous GUID value used in EDK I. gEfiPrint2ProtocolGuid is a enhanced version of gEfiPrintProtocolGuid.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5768 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12 2008-09-02 01:23:52 +00:00
parent 08e6463a72
commit ebe43565f9
8 changed files with 63 additions and 11 deletions

View File

@ -687,7 +687,10 @@ IsExpressionOpCode (
{ {
if (((Operand >= EFI_IFR_EQ_ID_VAL_OP) && (Operand <= EFI_IFR_NOT_OP)) || if (((Operand >= EFI_IFR_EQ_ID_VAL_OP) && (Operand <= EFI_IFR_NOT_OP)) ||
((Operand >= EFI_IFR_MATCH_OP) && (Operand <= EFI_IFR_SPAN_OP)) || ((Operand >= EFI_IFR_MATCH_OP) && (Operand <= EFI_IFR_SPAN_OP)) ||
(Operand == EFI_IFR_CATENATE_OP) (Operand == EFI_IFR_CATENATE_OP) ||
(Operand == EFI_IFR_TO_LOWER_OP) ||
(Operand == EFI_IFR_TO_UPPER_OP) ||
(Operand == EFI_IFR_VERSION_OP)
) { ) {
return TRUE; return TRUE;
} else { } else {

View File

@ -597,6 +597,7 @@ InitializeBrowserStrings (
gPlusString = GetToken (STRING_TOKEN (PLUS_STRING), gHiiHandle); gPlusString = GetToken (STRING_TOKEN (PLUS_STRING), gHiiHandle);
gMinusString = GetToken (STRING_TOKEN (MINUS_STRING), gHiiHandle); gMinusString = GetToken (STRING_TOKEN (MINUS_STRING), gHiiHandle);
gAdjustNumber = GetToken (STRING_TOKEN (ADJUST_NUMBER), gHiiHandle); gAdjustNumber = GetToken (STRING_TOKEN (ADJUST_NUMBER), gHiiHandle);
gSaveChanges = GetToken (STRING_TOKEN (SAVE_CHANGES), gHiiHandle);
return ; return ;
} }
@ -637,6 +638,7 @@ FreeBrowserStrings (
SafeFreePool (gPlusString); SafeFreePool (gPlusString);
SafeFreePool (gMinusString); SafeFreePool (gMinusString);
SafeFreePool (gAdjustNumber); SafeFreePool (gAdjustNumber);
SafeFreePool (gSaveChanges);
return ; return ;
} }
@ -857,6 +859,9 @@ SetupBrowser (
EFI_HII_VALUE *HiiValue; EFI_HII_VALUE *HiiValue;
FORM_BROWSER_STATEMENT *Statement; FORM_BROWSER_STATEMENT *Statement;
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
EFI_INPUT_KEY Key;
CHAR16 YesResponse;
CHAR16 NoResponse;
gMenuRefreshHead = NULL; gMenuRefreshHead = NULL;
gResetRequired = FALSE; gResetRequired = FALSE;
@ -990,6 +995,32 @@ SetupBrowser (
// Force to reparse IFR binary of target Formset // Force to reparse IFR binary of target Formset
// //
Selection->Action = UI_ACTION_REFRESH_FORMSET; Selection->Action = UI_ACTION_REFRESH_FORMSET;
//
// Uncommitted data will be lost after IFR binary re-pasing, so confirm on whether to save
//
if (gNvUpdateRequired) {
Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
YesResponse = gYesResponse[0];
NoResponse = gNoResponse[0];
do {
CreateDialog (3, TRUE, 0, NULL, &Key, gEmptyString, gSaveChanges, gEmptyString);
} while
(
(Key.ScanCode != SCAN_ESC) &&
((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (NoResponse | UPPER_LOWER_CASE_OFFSET)) &&
((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (YesResponse | UPPER_LOWER_CASE_OFFSET))
);
if ((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) == (YesResponse | UPPER_LOWER_CASE_OFFSET)) {
//
// If the user hits the YesResponse key
//
SubmitForm (Selection->FormSet, Selection->Form);
}
}
} }
} }
} while (Selection->Action == UI_ACTION_REFRESH_FORM); } while (Selection->Action == UI_ACTION_REFRESH_FORM);

View File

@ -328,6 +328,7 @@ ProcessOptions (
// //
// Initialize Option value array // Initialize Option value array
// //
if (Question->BufferValue[0] == 0) { if (Question->BufferValue[0] == 0) {
GetQuestionDefault (Selection->FormSet, Selection->Form, Question, 0); GetQuestionDefault (Selection->FormSet, Selection->Form, Question, 0);
} }

View File

@ -24,7 +24,12 @@ SETUP_DRIVER_PRIVATE_DATA mPrivateData = {
BrowserCallback BrowserCallback
}, },
{ {
UnicodeVSPrint UnicodeVSPrint,
UnicodeVSPrintAsciiFormat,
UnicodeValueToString,
AsciiVSPrint,
AsciiVSPrintUnicodeFormat,
AsciiValueToString
} }
}; };
@ -39,7 +44,6 @@ UINTN gFunctionKeySetting;
BOOLEAN gResetRequired; BOOLEAN gResetRequired;
BOOLEAN gNvUpdateRequired; BOOLEAN gNvUpdateRequired;
EFI_HII_HANDLE gHiiHandle; EFI_HII_HANDLE gHiiHandle;
BOOLEAN gFirstIn;
UINT16 gDirection; UINT16 gDirection;
EFI_SCREEN_DESCRIPTOR gScreenDimensions; EFI_SCREEN_DESCRIPTOR gScreenDimensions;
BOOLEAN gUpArrow; BOOLEAN gUpArrow;
@ -76,6 +80,7 @@ CHAR16 *gMiniString;
CHAR16 *gPlusString; CHAR16 *gPlusString;
CHAR16 *gMinusString; CHAR16 *gMinusString;
CHAR16 *gAdjustNumber; CHAR16 *gAdjustNumber;
CHAR16 *gSaveChanges;
CHAR16 gPromptBlockWidth; CHAR16 gPromptBlockWidth;
CHAR16 gOptionBlockWidth; CHAR16 gOptionBlockWidth;
@ -274,11 +279,8 @@ SendForm (
// //
// Ensure we are in Text mode // Ensure we are in Text mode
// //
if (gFirstIn) {
gFirstIn = FALSE;
gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK)); gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
DisableQuietBoot (); DisableQuietBoot ();
}
for (Index = 0; Index < HandleCount; Index++) { for (Index = 0; Index < HandleCount; Index++) {
Selection = AllocateZeroPool (sizeof (UI_MENU_SELECTION)); Selection = AllocateZeroPool (sizeof (UI_MENU_SELECTION));
@ -576,7 +578,6 @@ InitializeSetup (
// //
// Initialize Driver private data // Initialize Driver private data
// //
gFirstIn = TRUE;
BannerData = AllocateZeroPool (sizeof (BANNER_DATA)); BannerData = AllocateZeroPool (sizeof (BANNER_DATA));
ASSERT (BannerData != NULL); ASSERT (BannerData != NULL);
@ -595,6 +596,19 @@ InitializeSetup (
// //
// Install Print protocol // Install Print protocol
// //
Status = gBS->InstallProtocolInterface (
&mPrivateData.Handle,
&gEfiPrint2ProtocolGuid,
EFI_NATIVE_INTERFACE,
&mPrivateData.Print
);
//
// Install Ecp Print protocol, which is defined in
// Edk\Foundation\Protocol\Print\Print.h with protocol
// GUID of { 0xdf2d868e, 0x32fc, 0x4cf0, {0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0 }}
// This is support previous module that written to consume this protocol.
//
Status = gBS->InstallProtocolInterface ( Status = gBS->InstallProtocolInterface (
&mPrivateData.Handle, &mPrivateData.Handle,
&gEfiPrintProtocolGuid, &gEfiPrintProtocolGuid,

View File

@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Uefi.h> #include <Uefi.h>
#include <Protocol/Print.h> #include <Protocol/Print.h>
#include <Protocol/Print2.h>
#include <Protocol/SimpleTextOut.h> #include <Protocol/SimpleTextOut.h>
#include <Protocol/SimpleTextIn.h> #include <Protocol/SimpleTextIn.h>
#include <Protocol/FormBrowser2.h> #include <Protocol/FormBrowser2.h>
@ -172,7 +173,7 @@ typedef struct {
// Produced protocol // Produced protocol
// //
EFI_FORM_BROWSER2_PROTOCOL FormBrowser2; EFI_FORM_BROWSER2_PROTOCOL FormBrowser2;
EFI_PRINT_PROTOCOL Print; EFI_PRINT2_PROTOCOL Print;
} SETUP_DRIVER_PRIVATE_DATA; } SETUP_DRIVER_PRIVATE_DATA;
@ -454,7 +455,6 @@ extern UINTN gFunctionKeySetting;
extern BOOLEAN gResetRequired; extern BOOLEAN gResetRequired;
extern BOOLEAN gNvUpdateRequired; extern BOOLEAN gNvUpdateRequired;
extern EFI_HII_HANDLE gHiiHandle; extern EFI_HII_HANDLE gHiiHandle;
extern BOOLEAN gFirstIn;
extern UINT16 gDirection; extern UINT16 gDirection;
extern EFI_SCREEN_DESCRIPTOR gScreenDimensions; extern EFI_SCREEN_DESCRIPTOR gScreenDimensions;
extern BOOLEAN gUpArrow; extern BOOLEAN gUpArrow;
@ -491,6 +491,7 @@ extern CHAR16 *gMiniString;
extern CHAR16 *gPlusString; extern CHAR16 *gPlusString;
extern CHAR16 *gMinusString; extern CHAR16 *gMinusString;
extern CHAR16 *gAdjustNumber; extern CHAR16 *gAdjustNumber;
extern CHAR16 *gSaveChanges;
extern CHAR16 gPromptBlockWidth; extern CHAR16 gPromptBlockWidth;
extern CHAR16 gOptionBlockWidth; extern CHAR16 gOptionBlockWidth;

View File

@ -69,6 +69,7 @@
[Protocols] [Protocols]
gEfiPrintProtocolGuid # PROTOCOL ALWAYS_PRODUCED gEfiPrintProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiPrint2ProtocolGuid
gEfiHiiConfigAccessProtocolGuid gEfiHiiConfigAccessProtocolGuid
gEfiHiiStringProtocolGuid gEfiHiiStringProtocolGuid
gEfiFormBrowser2ProtocolGuid gEfiFormBrowser2ProtocolGuid

View File

@ -2828,6 +2828,7 @@ UiDisplayMenu (
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
Selection->Action = UI_ACTION_REFRESH_FORM; Selection->Action = UI_ACTION_REFRESH_FORM;
Selection->Statement = NULL;
// //
// Show NV update flag on status bar // Show NV update flag on status bar