Revision: 14389
          http://edk2.svn.sourceforge.net/edk2/?rev=14389&view=rev
Author:   ydong10
Date:     2013-05-27 07:04:09 +0000 (Mon, 27 May 2013)
Log Message:
-----------
Refine the logic about processing options for oneof opcode.

Signed-off-by: Eric Dong <[email protected]>
Reviewed-by: Liming Gao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c

Modified: trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c    
2013-05-27 05:45:35 UTC (rev 14388)
+++ trunk/edk2/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c    
2013-05-27 07:04:09 UTC (rev 14389)
@@ -1023,10 +1023,10 @@
     for (Index = 0; Index < OptionCount; Index++) {
       OneOfOption = QUESTION_OPTION_FROM_LINK (Link);
       Link = GetNextNode (&Question->OptionListHead, Link);
-      if ((OneOfOption->SuppressExpression == NULL) ||
-            EvaluateExpressionList(OneOfOption->SuppressExpression, FALSE, 
NULL, NULL) == ExpressFalse) {
-        RemoveEntryList (&OneOfOption->Link);
-        InsertHeadList (&Question->OptionListHead, &OneOfOption->Link);
+      if ((OneOfOption->SuppressExpression != NULL) &&
+          EvaluateExpressionList(OneOfOption->SuppressExpression, FALSE, NULL, 
NULL) > ExpressFalse) {
+        continue;
+      } else {
         PopUpMenuLines++;
       }
     }
@@ -1040,7 +1040,14 @@
   Link = GetFirstNode (&Question->OptionListHead);
   for (Index = 0; Index < PopUpMenuLines; Index++) {
     OneOfOption = QUESTION_OPTION_FROM_LINK (Link);
+    Link = GetNextNode (&Question->OptionListHead, Link);
 
+    if (!OrderedList && (OneOfOption->SuppressExpression != NULL) &&
+        EvaluateExpressionList(OneOfOption->SuppressExpression, FALSE, NULL, 
NULL) > ExpressFalse) {
+      Index--;
+      continue;
+    }
+
     StringPtr = GetToken (OneOfOption->Text, MenuOption->Handle);
     if (StrLen (StringPtr) > PopUpWidth) {
       PopUpWidth = StrLen (StringPtr);
@@ -1053,8 +1060,6 @@
       //
       HighlightOptionIndex = Index;
     }
-
-    Link = GetNextNode (&Question->OptionListHead, Link);
   }
 
   //
@@ -1123,6 +1128,13 @@
     Link = GetFirstNode (&Question->OptionListHead);
     for (Index = 0; Index < TopOptionIndex; Index++) {
       Link = GetNextNode (&Question->OptionListHead, Link);
+
+      OneOfOption = QUESTION_OPTION_FROM_LINK (Link);
+      if (!OrderedList && (OneOfOption->SuppressExpression != NULL) &&
+          EvaluateExpressionList(OneOfOption->SuppressExpression, FALSE, NULL, 
NULL) > ExpressFalse) {
+        Index--;
+        continue;
+      }
     }
 
     //
@@ -1133,6 +1145,12 @@
       OneOfOption = QUESTION_OPTION_FROM_LINK (Link);
       Link = GetNextNode (&Question->OptionListHead, Link);
 
+      if (!OrderedList && (OneOfOption->SuppressExpression != NULL) &&
+          EvaluateExpressionList(OneOfOption->SuppressExpression, FALSE, NULL, 
NULL) > ExpressFalse) {
+        Index--;
+        continue;
+      }
+
       StringPtr = GetToken (OneOfOption->Text, MenuOption->Handle);
       ASSERT (StringPtr != NULL);
       //

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to