mirror of https://github.com/acidanthera/audk.git
Bug description:
When the menu is refresh type, and the old string is longer than new string, after refresh, some old string will still show. The mainly change is: 1. This change cleans the old string first and then paints the new string. 2. Fixed old code checks grayout flag not correct. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11354 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
27f3015903
commit
81da6ef925
|
@ -342,6 +342,7 @@ RefreshForm (
|
|||
FORM_BROWSER_STATEMENT *Question;
|
||||
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
|
||||
EFI_BROWSER_ACTION_REQUEST ActionRequest;
|
||||
CHAR16 *PadString;
|
||||
|
||||
if (gMenuRefreshHead != NULL) {
|
||||
|
||||
|
@ -373,6 +374,11 @@ RefreshForm (
|
|||
for (Index = 0; OptionString[Index] == L' '; Index++)
|
||||
;
|
||||
|
||||
PadString = AllocatePool (gOptionBlockWidth * sizeof (CHAR16));
|
||||
SetMem16 (PadString, (gOptionBlockWidth - 1) * sizeof (CHAR16), CHAR_SPACE);
|
||||
PadString[gOptionBlockWidth - 1] = 0;
|
||||
PrintStringAt (MenuRefreshEntry->CurrentColumn, MenuRefreshEntry->CurrentRow, PadString);
|
||||
FreePool (PadString);
|
||||
PrintStringAt (MenuRefreshEntry->CurrentColumn, MenuRefreshEntry->CurrentRow, &OptionString[Index]);
|
||||
FreePool (OptionString);
|
||||
}
|
||||
|
@ -2209,7 +2215,7 @@ UiDisplayMenu (
|
|||
//
|
||||
if (gMenuRefreshHead != NULL) {
|
||||
for (MenuRefreshEntry = gMenuRefreshHead; MenuRefreshEntry != NULL; MenuRefreshEntry = MenuRefreshEntry->Next) {
|
||||
if (MenuOption->GrayOut) {
|
||||
if (MenuRefreshEntry->MenuOption->GrayOut) {
|
||||
MenuRefreshEntry->CurrentAttribute = FIELD_TEXT_GRAYED | FIELD_BACKGROUND;
|
||||
} else {
|
||||
MenuRefreshEntry->CurrentAttribute = PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND;
|
||||
|
|
Loading…
Reference in New Issue