mirror of https://github.com/acidanthera/audk.git
1. Code clean up: add IN/OUT modifier for parameters.
2. UI enchancement: if there is no editable item in a Form, the F9/F10 will not be displayed in the footer. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9363 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
f4a2af1f4d
commit
8b0fc5c1e1
|
@ -512,7 +512,7 @@ InitializeUnicodeCollationProtocol (
|
|||
**/
|
||||
VOID
|
||||
IfrStrToUpper (
|
||||
CHAR16 *String
|
||||
IN CHAR16 *String
|
||||
)
|
||||
{
|
||||
while (*String != 0) {
|
||||
|
@ -635,7 +635,7 @@ IfrToUint (
|
|||
if (String == NULL) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
|
||||
IfrStrToUpper (String);
|
||||
StringPtr = StrStr (String, L"0X");
|
||||
if (StringPtr != NULL) {
|
||||
|
@ -724,7 +724,7 @@ Done:
|
|||
}
|
||||
if (String[1] != NULL) {
|
||||
FreePool (String[1]);
|
||||
}
|
||||
}
|
||||
if (StringPtr != NULL) {
|
||||
FreePool (StringPtr);
|
||||
}
|
||||
|
@ -788,7 +788,7 @@ Done:
|
|||
}
|
||||
if (String[1] != NULL) {
|
||||
FreePool (String[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
@ -877,7 +877,7 @@ Done:
|
|||
}
|
||||
if (String[1] != NULL) {
|
||||
FreePool (String[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
@ -1051,7 +1051,7 @@ Done:
|
|||
}
|
||||
if (String[1] != NULL) {
|
||||
FreePool (String[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
@ -1159,7 +1159,7 @@ Done:
|
|||
}
|
||||
if (String[1] != NULL) {
|
||||
FreePool (String[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
|
|
@ -96,15 +96,15 @@ CreateStatement (
|
|||
Convert a numeric value to a Unicode String and insert it to String Package.
|
||||
This string is used as the Unicode Name for the EFI Variable. This is to support
|
||||
the deprecated vareqval opcode.
|
||||
|
||||
|
||||
@param FormSet The FormSet.
|
||||
@param Statement The numeric question whose VarStoreInfo.VarName is the
|
||||
numeric value which is used to produce the Unicode Name
|
||||
for the EFI Variable.
|
||||
|
||||
|
||||
If the Statement is NULL, the ASSERT.
|
||||
If the opcode is not Numeric, then ASSERT.
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The funtion always succeeds.
|
||||
**/
|
||||
EFI_STATUS
|
||||
|
@ -118,7 +118,7 @@ UpdateCheckBoxStringToken (
|
|||
|
||||
ASSERT (Statement != NULL);
|
||||
ASSERT (Statement->Operand == EFI_IFR_NUMERIC_OP);
|
||||
|
||||
|
||||
UnicodeValueToString (Str, 0, Statement->VarStoreInfo.VarName, MAXIMUM_VALUE_CHARACTERS - 1);
|
||||
|
||||
Id = HiiSetString (FormSet->HiiHandle, 0, Str, NULL);
|
||||
|
@ -127,21 +127,21 @@ UpdateCheckBoxStringToken (
|
|||
}
|
||||
|
||||
Statement->VarStoreInfo.VarName = Id;
|
||||
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Check if the next opcode is the EFI_IFR_EXTEND_OP_VAREQNAME.
|
||||
|
||||
|
||||
@param OpCodeData The current opcode.
|
||||
|
||||
|
||||
@retval TRUE Yes.
|
||||
@retval FALSE No.
|
||||
**/
|
||||
BOOLEAN
|
||||
IsNextOpCodeGuidedVarEqName (
|
||||
UINT8 *OpCodeData
|
||||
IN UINT8 *OpCodeData
|
||||
)
|
||||
{
|
||||
//
|
||||
|
@ -151,7 +151,7 @@ IsNextOpCodeGuidedVarEqName (
|
|||
if (*OpCodeData == EFI_IFR_GUID_OP) {
|
||||
if (CompareGuid (&gEfiIfrFrameworkGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {
|
||||
//
|
||||
// Specific GUIDed opcodes to support IFR generated from Framework HII VFR
|
||||
// Specific GUIDed opcodes to support IFR generated from Framework HII VFR
|
||||
//
|
||||
if ((((EFI_IFR_GUID_VAREQNAME *) OpCodeData)->ExtendOpCode) == EFI_IFR_EXTEND_OP_VAREQNAME) {
|
||||
return TRUE;
|
||||
|
@ -329,19 +329,19 @@ InitializeConfigHdr (
|
|||
)
|
||||
{
|
||||
CHAR16 *Name;
|
||||
|
||||
|
||||
if (Storage->Type == EFI_HII_VARSTORE_BUFFER) {
|
||||
Name = Storage->Name;
|
||||
} else {
|
||||
Name = NULL;
|
||||
}
|
||||
|
||||
|
||||
Storage->ConfigHdr = HiiConstructConfigHdr (
|
||||
&Storage->Guid,
|
||||
Name,
|
||||
FormSet->DriverHandle
|
||||
);
|
||||
|
||||
|
||||
if (Storage->ConfigHdr == NULL) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
@ -1188,7 +1188,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_SUBTITLE_OP:
|
||||
CurrentStatement = CreateStatement (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT (CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_SUBTITLE *) OpCodeData)->Flags;
|
||||
|
||||
if (Scope != 0) {
|
||||
|
@ -1249,7 +1249,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_NUMERIC_OP:
|
||||
CurrentStatement = CreateQuestion (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT(CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_ONE_OF *) OpCodeData)->Flags;
|
||||
Value = &CurrentStatement->HiiValue;
|
||||
|
||||
|
@ -1300,7 +1300,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_ORDERED_LIST_OP:
|
||||
CurrentStatement = CreateQuestion (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT(CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_ORDERED_LIST *) OpCodeData)->Flags;
|
||||
CurrentStatement->MaxContainers = ((EFI_IFR_ORDERED_LIST *) OpCodeData)->MaxContainers;
|
||||
|
||||
|
@ -1314,7 +1314,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_CHECKBOX_OP:
|
||||
CurrentStatement = CreateQuestion (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT(CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_CHECKBOX *) OpCodeData)->Flags;
|
||||
CurrentStatement->StorageWidth = sizeof (BOOLEAN);
|
||||
CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_BOOLEAN;
|
||||
|
@ -1363,7 +1363,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_DATE_OP:
|
||||
CurrentStatement = CreateQuestion (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT(CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_DATE *) OpCodeData)->Flags;
|
||||
CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_DATE;
|
||||
|
||||
|
@ -1383,7 +1383,7 @@ ParseOpCodes (
|
|||
case EFI_IFR_TIME_OP:
|
||||
CurrentStatement = CreateQuestion (OpCodeData, FormSet, CurrentForm);
|
||||
ASSERT(CurrentStatement != NULL);
|
||||
|
||||
|
||||
CurrentStatement->Flags = ((EFI_IFR_TIME *) OpCodeData)->Flags;
|
||||
CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_TIME;
|
||||
|
||||
|
|
|
@ -387,7 +387,7 @@ GetNumericInput (
|
|||
|
||||
InputText[0] = LEFT_NUMERIC_DELIMITER;
|
||||
SetUnicodeMem (InputText + 1, InputWidth, L' ');
|
||||
ASSERT (InputWidth + 2 < MAX_NUMERIC_INPUT_WIDTH);
|
||||
ASSERT (InputWidth + 2 < MAX_NUMERIC_INPUT_WIDTH);
|
||||
InputText[InputWidth + 1] = RIGHT_NUMERIC_DELIMITER;
|
||||
InputText[InputWidth + 2] = L'\0';
|
||||
|
||||
|
|
|
@ -31,11 +31,11 @@ UI_MENU_SELECTION *gCurrentSelection;
|
|||
**/
|
||||
VOID
|
||||
ClearLines (
|
||||
UINTN LeftColumn,
|
||||
UINTN RightColumn,
|
||||
UINTN TopRow,
|
||||
UINTN BottomRow,
|
||||
UINTN TextAttribute
|
||||
IN UINTN LeftColumn,
|
||||
IN UINTN RightColumn,
|
||||
IN UINTN TopRow,
|
||||
IN UINTN BottomRow,
|
||||
IN UINTN TextAttribute
|
||||
)
|
||||
{
|
||||
CHAR16 *Buffer;
|
||||
|
@ -80,8 +80,8 @@ ClearLines (
|
|||
**/
|
||||
VOID
|
||||
NewStrCat (
|
||||
CHAR16 *Destination,
|
||||
CHAR16 *Source
|
||||
IN OUT CHAR16 *Destination,
|
||||
IN CHAR16 *Source
|
||||
)
|
||||
{
|
||||
UINTN Length;
|
||||
|
@ -117,7 +117,7 @@ NewStrCat (
|
|||
**/
|
||||
UINTN
|
||||
GetStringWidth (
|
||||
CHAR16 *String
|
||||
IN CHAR16 *String
|
||||
)
|
||||
{
|
||||
UINTN Index;
|
||||
|
@ -460,6 +460,7 @@ DisplayForm (
|
|||
FORM_BROWSER_STATEMENT *Statement;
|
||||
UINT16 NumberOfLines;
|
||||
EFI_STATUS Status;
|
||||
UI_MENU_OPTION *MenuOption;
|
||||
|
||||
Handle = Selection->Handle;
|
||||
MenuItemCount = 0;
|
||||
|
@ -494,6 +495,7 @@ DisplayForm (
|
|||
return Status;
|
||||
}
|
||||
|
||||
Selection->FormEditable = FALSE;
|
||||
Link = GetFirstNode (&Selection->Form->StatementListHead);
|
||||
while (!IsNull (&Selection->Form->StatementListHead, Link)) {
|
||||
Statement = FORM_BROWSER_STATEMENT_FROM_LINK (Link);
|
||||
|
@ -530,8 +532,15 @@ DisplayForm (
|
|||
// We are NOT!! removing this StringPtr buffer via FreePool since it is being used in the menuoptions, we will do
|
||||
// it in UiFreeMenu.
|
||||
//
|
||||
UiAddMenuOption (StringPtr, Selection->Handle, Statement, NumberOfLines, MenuItemCount);
|
||||
MenuOption = UiAddMenuOption (StringPtr, Selection->Handle, Statement, NumberOfLines, MenuItemCount);
|
||||
MenuItemCount++;
|
||||
|
||||
if (MenuOption->IsQuestion && !MenuOption->ReadOnly) {
|
||||
//
|
||||
// At least one item is not readonly, this Form is considered as editable
|
||||
//
|
||||
Selection->FormEditable = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Link = GetNextNode (&Selection->Form->StatementListHead, Link);
|
||||
|
@ -553,7 +562,6 @@ InitializeBrowserStrings (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
gFunctionOneString = GetToken (STRING_TOKEN (FUNCTION_ONE_STRING), gHiiHandle);
|
||||
gFunctionNineString = GetToken (STRING_TOKEN (FUNCTION_NINE_STRING), gHiiHandle);
|
||||
gFunctionTenString = GetToken (STRING_TOKEN (FUNCTION_TEN_STRING), gHiiHandle);
|
||||
gEnterString = GetToken (STRING_TOKEN (ENTER_STRING), gHiiHandle);
|
||||
|
@ -596,7 +604,6 @@ FreeBrowserStrings (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
FreePool (gFunctionOneString);
|
||||
FreePool (gFunctionNineString);
|
||||
FreePool (gFunctionTenString);
|
||||
FreePool (gEnterString);
|
||||
|
@ -632,12 +639,14 @@ FreeBrowserStrings (
|
|||
/**
|
||||
Update key's help imformation.
|
||||
|
||||
@param Selection Tell setup browser the information about the Selection
|
||||
@param MenuOption The Menu option
|
||||
@param Selected Whether or not a tag be selected
|
||||
|
||||
**/
|
||||
VOID
|
||||
UpdateKeyHelp (
|
||||
IN UI_MENU_SELECTION *Selection,
|
||||
IN UI_MENU_OPTION *MenuOption,
|
||||
IN BOOLEAN Selected
|
||||
)
|
||||
|
@ -676,9 +685,10 @@ UpdateKeyHelp (
|
|||
|
||||
if (!Selected) {
|
||||
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {
|
||||
PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gFunctionOneString);
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
if (Selection->FormEditable) {
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
}
|
||||
PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);
|
||||
}
|
||||
|
||||
|
@ -732,9 +742,10 @@ UpdateKeyHelp (
|
|||
ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);
|
||||
|
||||
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {
|
||||
PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gFunctionOneString);
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
if (Selection->FormEditable) {
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
}
|
||||
PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);
|
||||
}
|
||||
|
||||
|
@ -752,9 +763,10 @@ UpdateKeyHelp (
|
|||
|
||||
if (!Selected) {
|
||||
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {
|
||||
PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gFunctionOneString);
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
if (Selection->FormEditable) {
|
||||
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
|
||||
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
|
||||
}
|
||||
PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);
|
||||
}
|
||||
|
||||
|
|
|
@ -819,7 +819,7 @@ ProcessOptions (
|
|||
|
||||
TempString = AllocateCopyPool ((Maximum + 1) * sizeof (CHAR16), Question->BufferValue);
|
||||
ASSERT (TempString != NULL);
|
||||
|
||||
|
||||
TempString[Maximum] = L'\0';
|
||||
|
||||
if (StrCmp (StringPtr, TempString) != 0) {
|
||||
|
@ -965,7 +965,7 @@ ProcessHelpString (
|
|||
UINTN *OldIndexArray;
|
||||
|
||||
BlockWidth = (UINTN) gHelpBlockWidth - 1;
|
||||
|
||||
|
||||
//
|
||||
// every three elements of IndexArray form a screen-line of string:[ IndexArray[i*3], IndexArray[i*3+1] )
|
||||
// IndexArray[i*3+2] stores the initial glyph width of single character. to save this is because we want
|
||||
|
@ -992,7 +992,7 @@ ProcessHelpString (
|
|||
OldIndexArray = IndexArray;
|
||||
IndexArray = AllocatePool (AllocateSize * sizeof (UINTN) * 3);
|
||||
ASSERT (IndexArray != NULL);
|
||||
|
||||
|
||||
CopyMem (IndexArray, OldIndexArray, LineCount * sizeof (UINTN) * 3);
|
||||
FreePool (OldIndexArray);
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ BOOLEAN gDownArrow;
|
|||
//
|
||||
// Browser Global Strings
|
||||
//
|
||||
CHAR16 *gFunctionOneString;
|
||||
CHAR16 *gFunctionNineString;
|
||||
CHAR16 *gFunctionTenString;
|
||||
CHAR16 *gEnterString;
|
||||
|
@ -2500,10 +2499,6 @@ InitializeFormSet (
|
|||
//
|
||||
// Function key prompt can not be displayed if the function key has been disabled.
|
||||
//
|
||||
if ((gFunctionKeySetting & FUNCTION_ONE) != FUNCTION_ONE) {
|
||||
gFunctionOneString = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);
|
||||
}
|
||||
|
||||
if ((gFunctionKeySetting & FUNCTION_NINE) != FUNCTION_NINE) {
|
||||
gFunctionNineString = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);
|
||||
}
|
||||
|
|
|
@ -71,9 +71,8 @@ extern UINT8 SetupBrowserStrings[];
|
|||
// Definition for function key setting
|
||||
//
|
||||
#define NONE_FUNCTION_KEY_SETTING 0
|
||||
#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_ONE | FUNCTION_NINE | FUNCTION_TEN)
|
||||
#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_NINE | FUNCTION_TEN)
|
||||
|
||||
#define FUNCTION_ONE (1 << 0)
|
||||
#define FUNCTION_NINE (1 << 2)
|
||||
#define FUNCTION_TEN (1 << 3)
|
||||
|
||||
|
@ -466,7 +465,6 @@ extern FORM_BROWSER_FORMSET *gOldFormSet;
|
|||
//
|
||||
// Browser Global Strings
|
||||
//
|
||||
extern CHAR16 *gFunctionOneString;
|
||||
extern CHAR16 *gFunctionNineString;
|
||||
extern CHAR16 *gFunctionTenString;
|
||||
extern CHAR16 *gEnterString;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
|
|
Binary file not shown.
|
@ -558,8 +558,10 @@ UiWaitForSingleEvent (
|
|||
@param NumberOfLines Display lines for this Menu Option.
|
||||
@param MenuItemCount The index for this Option in the Menu.
|
||||
|
||||
@retval Pointer Pointer to the added Menu Option.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UI_MENU_OPTION *
|
||||
UiAddMenuOption (
|
||||
IN CHAR16 *String,
|
||||
IN EFI_HII_HANDLE Handle,
|
||||
|
@ -573,6 +575,7 @@ UiAddMenuOption (
|
|||
UINTN Count;
|
||||
|
||||
Count = 1;
|
||||
MenuOption = NULL;
|
||||
|
||||
if (Statement->Operand == EFI_IFR_DATE_OP || Statement->Operand == EFI_IFR_TIME_OP) {
|
||||
//
|
||||
|
@ -617,6 +620,26 @@ UiAddMenuOption (
|
|||
MenuOption->GrayOut = Statement->GrayOutExpression->Result.Value.b;
|
||||
}
|
||||
|
||||
switch (Statement->Operand) {
|
||||
case EFI_IFR_ORDERED_LIST_OP:
|
||||
case EFI_IFR_ONE_OF_OP:
|
||||
case EFI_IFR_NUMERIC_OP:
|
||||
case EFI_IFR_TIME_OP:
|
||||
case EFI_IFR_DATE_OP:
|
||||
case EFI_IFR_CHECKBOX_OP:
|
||||
case EFI_IFR_PASSWORD_OP:
|
||||
case EFI_IFR_STRING_OP:
|
||||
//
|
||||
// User could change the value of these items
|
||||
//
|
||||
MenuOption->IsQuestion = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
MenuOption->IsQuestion = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((Statement->ValueExpression != NULL) ||
|
||||
((Statement->QuestionFlags & EFI_IFR_FLAG_READ_ONLY) != 0)) {
|
||||
MenuOption->ReadOnly = TRUE;
|
||||
|
@ -624,6 +647,8 @@ UiAddMenuOption (
|
|||
|
||||
InsertTailList (&Menu, &MenuOption->Link);
|
||||
}
|
||||
|
||||
return MenuOption;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2245,7 +2270,7 @@ UiDisplayMenu (
|
|||
}
|
||||
}
|
||||
|
||||
UpdateKeyHelp (MenuOption, FALSE);
|
||||
UpdateKeyHelp (Selection, MenuOption, FALSE);
|
||||
|
||||
//
|
||||
// Clear reverse attribute
|
||||
|
@ -2384,8 +2409,7 @@ UiDisplayMenu (
|
|||
break;
|
||||
|
||||
case CHAR_NULL:
|
||||
if (((Key.ScanCode == SCAN_F1) && ((gFunctionKeySetting & FUNCTION_ONE) != FUNCTION_ONE)) ||
|
||||
((Key.ScanCode == SCAN_F9) && ((gFunctionKeySetting & FUNCTION_NINE) != FUNCTION_NINE)) ||
|
||||
if (((Key.ScanCode == SCAN_F9) && ((gFunctionKeySetting & FUNCTION_NINE) != FUNCTION_NINE)) ||
|
||||
((Key.ScanCode == SCAN_F10) && ((gFunctionKeySetting & FUNCTION_TEN) != FUNCTION_TEN))
|
||||
) {
|
||||
//
|
||||
|
@ -2589,16 +2613,16 @@ UiDisplayMenu (
|
|||
//
|
||||
// Editable Questions: oneof, ordered list, checkbox, numeric, string, password
|
||||
//
|
||||
UpdateKeyHelp (MenuOption, TRUE);
|
||||
UpdateKeyHelp (Selection, MenuOption, TRUE);
|
||||
Status = ProcessOptions (Selection, MenuOption, TRUE, &OptionString);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
Repaint = TRUE;
|
||||
NewLine = TRUE;
|
||||
UpdateKeyHelp (MenuOption, FALSE);
|
||||
} else {
|
||||
Selection->Action = UI_ACTION_REFRESH_FORM;
|
||||
}
|
||||
UpdateKeyHelp (Selection, MenuOption, FALSE);
|
||||
} else {
|
||||
Selection->Action = UI_ACTION_REFRESH_FORM;
|
||||
}
|
||||
|
||||
if (OptionString != NULL) {
|
||||
FreePool (OptionString);
|
||||
|
@ -3078,6 +3102,12 @@ UiDisplayMenu (
|
|||
|
||||
case CfUiDefault:
|
||||
ControlFlag = CfCheckSelection;
|
||||
if (!Selection->FormEditable) {
|
||||
//
|
||||
// This Form is not editable, ignore the F9 (reset to default)
|
||||
//
|
||||
break;
|
||||
}
|
||||
|
||||
Status = ExtractFormDefault (Selection->FormSet, Selection->Form, DefaultId);
|
||||
|
||||
|
|
|
@ -108,6 +108,11 @@ typedef struct {
|
|||
FORM_BROWSER_FORMSET *FormSet;
|
||||
FORM_BROWSER_FORM *Form;
|
||||
FORM_BROWSER_STATEMENT *Statement;
|
||||
|
||||
//
|
||||
// Whether the Form is editable
|
||||
//
|
||||
BOOLEAN FormEditable;
|
||||
} UI_MENU_SELECTION;
|
||||
|
||||
#define UI_MENU_OPTION_SIGNATURE SIGNATURE_32 ('u', 'i', 'm', 'm')
|
||||
|
@ -140,6 +145,11 @@ typedef struct {
|
|||
|
||||
BOOLEAN GrayOut;
|
||||
BOOLEAN ReadOnly;
|
||||
|
||||
//
|
||||
// Whether user could change value of this item
|
||||
//
|
||||
BOOLEAN IsQuestion;
|
||||
} UI_MENU_OPTION;
|
||||
|
||||
#define MENU_OPTION_FROM_LINK(a) CR (a, UI_MENU_OPTION, Link, UI_MENU_OPTION_SIGNATURE)
|
||||
|
@ -280,8 +290,10 @@ UiFreeRefreshList (
|
|||
@param NumberOfLines Display lines for this Menu Option.
|
||||
@param MenuItemCount The index for this Option in the Menu.
|
||||
|
||||
@retval Pointer Pointer to the added Menu Option.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UI_MENU_OPTION *
|
||||
UiAddMenuOption (
|
||||
IN CHAR16 *String,
|
||||
IN EFI_HII_HANDLE Handle,
|
||||
|
@ -589,12 +601,14 @@ ProcessHelpString (
|
|||
/**
|
||||
Update key's help imformation.
|
||||
|
||||
@param Selection Tell setup browser the information about the Selection
|
||||
@param MenuOption The Menu option
|
||||
@param Selected Whether or not a tag be selected
|
||||
|
||||
**/
|
||||
VOID
|
||||
UpdateKeyHelp (
|
||||
IN UI_MENU_SELECTION *Selection,
|
||||
IN UI_MENU_OPTION *MenuOption,
|
||||
IN BOOLEAN Selected
|
||||
);
|
||||
|
@ -611,11 +625,11 @@ UpdateKeyHelp (
|
|||
**/
|
||||
VOID
|
||||
ClearLines (
|
||||
UINTN LeftColumn,
|
||||
UINTN RightColumn,
|
||||
UINTN TopRow,
|
||||
UINTN BottomRow,
|
||||
UINTN TextAttribute
|
||||
IN UINTN LeftColumn,
|
||||
IN UINTN RightColumn,
|
||||
IN UINTN TopRow,
|
||||
IN UINTN BottomRow,
|
||||
IN UINTN TextAttribute
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -634,7 +648,7 @@ ClearLines (
|
|||
**/
|
||||
UINTN
|
||||
GetStringWidth (
|
||||
CHAR16 *String
|
||||
IN CHAR16 *String
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -683,8 +697,8 @@ GetWidth (
|
|||
**/
|
||||
VOID
|
||||
NewStrCat (
|
||||
CHAR16 *Destination,
|
||||
CHAR16 *Source
|
||||
IN OUT CHAR16 *Destination,
|
||||
IN CHAR16 *Source
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue