VOID\r
)\r
{\r
- BROWSER_CONTEXT *Context;\r
- FORM_ENTRY_INFO *MenuList;\r
+ BROWSER_CONTEXT *Context;\r
+ FORM_ENTRY_INFO *MenuList;\r
+ FORM_BROWSER_FORMSET *FormSet;\r
\r
gBrowserContextCount++;\r
if (gBrowserContextCount == 1) {\r
InsertTailList(&Context->FormHistoryList, &MenuList->Link);\r
}\r
\r
+ //\r
+ // Save formset list.\r
+ //\r
+ InitializeListHead(&Context->FormSetList);\r
+ while (!IsListEmpty (&gBrowserFormSetList)) {\r
+ FormSet = FORM_BROWSER_FORMSET_FROM_LINK (gBrowserFormSetList.ForwardLink);\r
+ RemoveEntryList (&FormSet->Link);\r
+\r
+ InsertTailList(&Context->FormSetList, &FormSet->Link);\r
+ }\r
+\r
//\r
// Insert to FormBrowser context list\r
//\r
{\r
LIST_ENTRY *Link;\r
BROWSER_CONTEXT *Context;\r
- FORM_ENTRY_INFO *MenuList;\r
+ FORM_ENTRY_INFO *MenuList;\r
+ FORM_BROWSER_FORMSET *FormSet;\r
\r
ASSERT (gBrowserContextCount != 0);\r
gBrowserContextCount--;\r
InsertTailList(&mPrivateData.FormBrowserEx2.FormViewHistoryHead, &MenuList->Link);\r
}\r
\r
+ //\r
+ // Restore the Formset data.\r
+ //\r
+ while (!IsListEmpty (&Context->FormSetList)) {\r
+ FormSet = FORM_BROWSER_FORMSET_FROM_LINK (Context->FormSetList.ForwardLink);\r
+ RemoveEntryList (&FormSet->Link);\r
+\r
+ InsertTailList(&gBrowserFormSetList, &FormSet->Link);\r
+ }\r
+\r
//\r
// Remove from FormBrowser context list\r
//\r
EFI_QUESTION_ID CurFakeQestId;\r
BOOLEAN HiiPackageListUpdated;\r
BOOLEAN FinishRetrieveCall;\r
- LIST_ENTRY FormHistoryList;\r
+ LIST_ENTRY FormHistoryList;\r
+ LIST_ENTRY FormSetList;\r
} BROWSER_CONTEXT;\r
\r
#define BROWSER_CONTEXT_FROM_LINK(a) CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)\r