]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Restore the whole form set to default value when user enter F9, old logical only...
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 28 Jun 2011 05:01:49 +0000 (05:01 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 28 Jun 2011 05:01:49 +0000 (05:01 +0000)
Signed-off-by:ydong10
Reviewed-by:lgao4

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11911 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
MdeModulePkg/Universal/SetupBrowserDxe/Ui.c

index fa721f6d1622ef9d91c517650291e02421e32175..c65fd03a0ed89847c6825cd825b7da0b1cb23ab9 100644 (file)
@@ -2538,56 +2538,65 @@ GetQuestionDefault (
 \r
 \r
 /**\r
-  Reset Questions in a Form to their default value.\r
+  Reset Questions in a Formset to their default value.\r
 \r
   @param  FormSet                FormSet data structure.\r
-  @param  Form                   The Form which to be reset.\r
   @param  DefaultId              The Class of the default.\r
 \r
   @retval EFI_SUCCESS            The function completed successfully.\r
 \r
 **/\r
 EFI_STATUS\r
-ExtractFormDefault (\r
+ExtractFormSetDefault (\r
   IN FORM_BROWSER_FORMSET             *FormSet,\r
-  IN FORM_BROWSER_FORM                *Form,\r
   IN UINT16                           DefaultId\r
   )\r
 {\r
   EFI_STATUS              Status;\r
-  LIST_ENTRY              *Link;\r
+  LIST_ENTRY              *FormLink;\r
+  LIST_ENTRY              *StatementLink;\r
   FORM_BROWSER_STATEMENT  *Question;\r
+  FORM_BROWSER_FORM       *Form;\r
 \r
-  Link = GetFirstNode (&Form->StatementListHead);\r
-  while (!IsNull (&Form->StatementListHead, Link)) {\r
-    Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);\r
-    Link = GetNextNode (&Form->StatementListHead, Link);\r
-\r
+  FormLink = GetFirstNode (&FormSet->FormListHead);\r
+  while (!IsNull (&FormSet->FormListHead, FormLink)) {\r
+    Form = FORM_BROWSER_FORM_FROM_LINK (FormLink); \r
+    \r
     //\r
-    // If Question is disabled, don't reset it to default\r
+    // Extract Form default\r
     //\r
-    if (Question->DisableExpression != NULL) {\r
-      Status = EvaluateExpression (FormSet, Form, Question->DisableExpression);\r
-      if (!EFI_ERROR (Status) && Question->DisableExpression->Result.Value.b) {\r
-        continue;\r
+    StatementLink = GetFirstNode (&Form->StatementListHead);\r
+    while (!IsNull (&Form->StatementListHead, StatementLink)) {\r
+      Question = FORM_BROWSER_STATEMENT_FROM_LINK (StatementLink);\r
+      StatementLink = GetNextNode (&Form->StatementListHead, StatementLink);\r
+\r
+      //\r
+      // If Question is disabled, don't reset it to default\r
+      //\r
+      if (Question->DisableExpression != NULL) {\r
+        Status = EvaluateExpression (FormSet, Form, Question->DisableExpression);\r
+        if (!EFI_ERROR (Status) && Question->DisableExpression->Result.Value.b) {\r
+          continue;\r
+        }\r
       }\r
-    }\r
 \r
-    //\r
-    // Reset Question to its default value\r
-    //\r
-    Status = GetQuestionDefault (FormSet, Form, Question, DefaultId);\r
-    if (EFI_ERROR (Status)) {\r
-      continue;\r
-    }\r
+      //\r
+      // Reset Question to its default value\r
+      //\r
+      Status = GetQuestionDefault (FormSet, Form, Question, DefaultId);\r
+      if (EFI_ERROR (Status)) {\r
+        continue;\r
+      }\r
 \r
-    //\r
-    // Synchronize Buffer storage's Edit buffer\r
-    //\r
-    if ((Question->Storage != NULL) &&\r
-        (Question->Storage->Type != EFI_HII_VARSTORE_EFI_VARIABLE)) {\r
-      SetQuestionValue (FormSet, Form, Question, TRUE);\r
+      //\r
+      // Synchronize Buffer storage's Edit buffer\r
+      //\r
+      if ((Question->Storage != NULL) &&\r
+          (Question->Storage->Type != EFI_HII_VARSTORE_EFI_VARIABLE)) {\r
+        SetQuestionValue (FormSet, Form, Question, TRUE);\r
+      }\r
     }\r
+    FormLink = GetNextNode (&FormSet->FormListHead, FormLink);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -2848,13 +2857,9 @@ InitializeCurrentSetting (
   //\r
   // Extract default from IFR binary\r
   //\r
-  Link = GetFirstNode (&FormSet->FormListHead);\r
-  while (!IsNull (&FormSet->FormListHead, Link)) {\r
-    Form = FORM_BROWSER_FORM_FROM_LINK (Link);\r
-\r
-    Status = ExtractFormDefault (FormSet, Form, EFI_HII_DEFAULT_CLASS_STANDARD);\r
-\r
-    Link = GetNextNode (&FormSet->FormListHead, Link);\r
+  Status = ExtractFormSetDefault (FormSet, EFI_HII_DEFAULT_CLASS_STANDARD);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
   }\r
 \r
   //\r
index 40d18de690fa83d8d042ced36e8759a3e8f4c2f3..d83940e9795f94113b10641ef072b169e7224be2 100644 (file)
@@ -1014,19 +1014,17 @@ InitializeFormSet (
   );\r
 \r
 /**\r
-  Reset Questions in a Form to their default value.\r
+  Reset Questions in a Formset to their default value.\r
 \r
   @param  FormSet                FormSet data structure.\r
-  @param  Form                   The Form which to be reset.\r
   @param  DefaultId              The Class of the default.\r
 \r
   @retval EFI_SUCCESS            The function completed successfully.\r
 \r
 **/\r
 EFI_STATUS\r
-ExtractFormDefault (\r
+ExtractFormSetDefault (\r
   IN FORM_BROWSER_FORMSET             *FormSet,\r
-  IN  FORM_BROWSER_FORM               *Form,\r
   IN UINT16                           DefaultId\r
   );\r
 \r
index 4609bab86c1146c25d415b473876e534c168579d..755fb3b2bccb3e4ee9ff80e0363ba283edb382fd 100644 (file)
@@ -3234,14 +3234,10 @@ UiDisplayMenu (
 \r
     case CfUiDefault:\r
       ControlFlag = CfCheckSelection;\r
-      if (!Selection->FormEditable) {\r
-        //\r
-        // This Form is not editable, ignore the F9 (reset to default)\r
-        //\r
-        break;\r
-      }\r
-\r
-      Status = ExtractFormDefault (Selection->FormSet, Selection->Form, DefaultId);\r
+      //\r
+      // Reset to default values for the whole formset\r
+      //\r
+      Status = ExtractFormSetDefault (Selection->FormSet, DefaultId);\r
 \r
       if (!EFI_ERROR (Status)) {\r
         Selection->Action = UI_ACTION_REFRESH_FORM;\r