X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FSetupBrowserDxe%2FInputHandler.c;h=844590770a68d9a867bf4294dc189a48dad2dc67;hb=61f1b7c51e77b71c0101d4af172aee1d08a1096c;hp=720efb9a04331f927d9785792570dff0dd9a841e;hpb=826120239506ccaf7a8603560b79cf341f2d3bd5;p=mirror_edk2.git diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c b/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c index 720efb9a04..844590770a 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c @@ -1023,10 +1023,10 @@ GetSelectionInputPopUp ( 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,6 +1040,13 @@ GetSelectionInputPopUp ( 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) { @@ -1053,8 +1060,6 @@ GetSelectionInputPopUp ( // HighlightOptionIndex = Index; } - - Link = GetNextNode (&Question->OptionListHead, Link); } // @@ -1123,6 +1128,13 @@ GetSelectionInputPopUp ( 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 @@ GetSelectionInputPopUp ( 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); // @@ -1384,10 +1402,17 @@ WaitForKeyStroke ( { EFI_STATUS Status; - do { - UiWaitForSingleEvent (gST->ConIn->WaitForKey, 0, 0); + while (TRUE) { Status = gST->ConIn->ReadKeyStroke (gST->ConIn, Key); - } while (EFI_ERROR(Status)); + if (!EFI_ERROR (Status)) { + break; + } + if (Status != EFI_NOT_READY) { + continue; + } + + UiWaitForSingleEvent (gST->ConIn->WaitForKey, 0, 0); + } return Status; }