Support call of SendForm() from Callback(), i.e. nested call of SendForm().
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9364 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -443,6 +443,64 @@ typedef struct {
|
||||
LIST_ENTRY FormListHead; // Form list (FORM_BROWSER_FORM)
|
||||
} FORM_BROWSER_FORMSET;
|
||||
|
||||
#define BROWSER_CONTEXT_SIGNATURE SIGNATURE_32 ('B', 'C', 'T', 'X')
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
LIST_ENTRY Link;
|
||||
|
||||
//
|
||||
// Globals defined in Setup.c
|
||||
//
|
||||
BANNER_DATA *BannerData;
|
||||
UINTN ClassOfVfr;
|
||||
UINTN FunctionKeySetting;
|
||||
BOOLEAN ResetRequired;
|
||||
BOOLEAN NvUpdateRequired;
|
||||
UINT16 Direction;
|
||||
EFI_SCREEN_DESCRIPTOR ScreenDimensions;
|
||||
CHAR16 *FunctionNineString;
|
||||
CHAR16 *FunctionTenString;
|
||||
CHAR16 *EnterString;
|
||||
CHAR16 *EnterCommitString;
|
||||
CHAR16 *EnterEscapeString;
|
||||
CHAR16 *EscapeString;
|
||||
CHAR16 *SaveFailed;
|
||||
CHAR16 *MoveHighlight;
|
||||
CHAR16 *MakeSelection;
|
||||
CHAR16 *DecNumericInput;
|
||||
CHAR16 *HexNumericInput;
|
||||
CHAR16 *ToggleCheckBox;
|
||||
CHAR16 *PromptForData;
|
||||
CHAR16 *PromptForPassword;
|
||||
CHAR16 *PromptForNewPassword;
|
||||
CHAR16 *ConfirmPassword;
|
||||
CHAR16 *ConfirmError;
|
||||
CHAR16 *PassowordInvalid;
|
||||
CHAR16 *PressEnter;
|
||||
CHAR16 *EmptyString;
|
||||
CHAR16 *AreYouSure;
|
||||
CHAR16 *YesResponse;
|
||||
CHAR16 *NoResponse;
|
||||
CHAR16 *MiniString;
|
||||
CHAR16 *PlusString;
|
||||
CHAR16 *MinusString;
|
||||
CHAR16 *AdjustNumber;
|
||||
CHAR16 *SaveChanges;
|
||||
CHAR16 *OptionMismatch;
|
||||
CHAR16 PromptBlockWidth;
|
||||
CHAR16 OptionBlockWidth;
|
||||
CHAR16 HelpBlockWidth;
|
||||
FORM_BROWSER_FORMSET *OldFormSet;
|
||||
|
||||
//
|
||||
// Globals defined in Ui.c
|
||||
//
|
||||
LIST_ENTRY MenuOption;
|
||||
VOID *MenuRefreshHead;
|
||||
} BROWSER_CONTEXT;
|
||||
|
||||
#define BROWSER_CONTEXT_FROM_LINK(a) CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)
|
||||
|
||||
extern EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;
|
||||
extern EFI_HII_STRING_PROTOCOL *mHiiString;
|
||||
@@ -457,8 +515,6 @@ extern BOOLEAN gNvUpdateRequired;
|
||||
extern EFI_HII_HANDLE gHiiHandle;
|
||||
extern UINT16 gDirection;
|
||||
extern EFI_SCREEN_DESCRIPTOR gScreenDimensions;
|
||||
extern BOOLEAN gUpArrow;
|
||||
extern BOOLEAN gDownArrow;
|
||||
|
||||
extern FORM_BROWSER_FORMSET *gOldFormSet;
|
||||
|
||||
@@ -976,6 +1032,26 @@ GetIfrBinaryData (
|
||||
OUT UINT8 **BinaryData
|
||||
);
|
||||
|
||||
/**
|
||||
Save globals used by previous call to SendForm(). SendForm() may be called from
|
||||
HiiConfigAccess.Callback(), this will cause SendForm() be reentried.
|
||||
So, save globals of previous call to SendForm() and restore them upon exit.
|
||||
|
||||
**/
|
||||
VOID
|
||||
SaveBrowserContext (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Restore globals used by previous call to SendForm().
|
||||
|
||||
**/
|
||||
VOID
|
||||
RestoreBrowserContext (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
This is the routine which an external caller uses to direct the browser
|
||||
where to obtain it's information.
|
||||
|
Reference in New Issue
Block a user