Update for IntelFrameworkModulePkg.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / FileExplorer.c
index b77e909..733632b 100644 (file)
@@ -253,21 +253,27 @@ FileExplorerCallback (
   FILE_EXPLORER_NV_DATA *NvRamMap;\r
   EFI_STATUS            Status;\r
 \r
-  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    if ((Value == NULL) || (ActionRequest == NULL)) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-\r
-    Status         = EFI_SUCCESS;\r
-    Private        = FE_CALLBACK_DATA_FROM_THIS (This);\r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
-\r
+  if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {\r
     //\r
-    // Retrieve uncommitted data from Form Browser\r
+    // All other action return unsupported.\r
     //\r
-    NvRamMap = &Private->FeFakeNvData;\r
-    HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap);\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+  \r
+  Status         = EFI_SUCCESS;\r
+  Private        = FE_CALLBACK_DATA_FROM_THIS (This);\r
 \r
+  //\r
+  // Retrieve uncommitted data from Form Browser\r
+  //\r
+  NvRamMap = &Private->FeFakeNvData;\r
+  HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap);\r
+\r
+  if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    if ((Value == NULL) || (ActionRequest == NULL)) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+    \r
     if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_BOOT || QuestionId == KEY_VALUE_SAVE_AND_EXIT_DRIVER) {\r
       //\r
       // Apply changes and exit formset\r
@@ -309,16 +315,16 @@ FileExplorerCallback (
       // Exit File Explorer formset\r
       //\r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-    } else {\r
-      if (UpdateFileExplorer (Private, QuestionId)) {\r
-        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-      }\r
     }\r
-\r
-    return Status;\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+    if (Value == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+    \r
+    if (QuestionId >= FILE_OPTION_OFFSET) {\r
+      UpdateFileExplorer (Private, QuestionId);\r
+    }\r
   }\r
-  //\r
-  // All other action return unsupported.\r
-  //\r
-  return EFI_UNSUPPORTED;\r
+\r
+  return Status;\r
 }\r