Reviewed-by: Liming Gao <liming....@intel.com> > -----Original Message----- > From: Bi, Dandan > Sent: Thursday, June 16, 2016 9:51 AM > To: edk2-devel@lists.01.org > Cc: Gao, Liming <liming....@intel.com>; Dong, Eric <eric.d...@intel.com> > Subject: [PATCH v2] MdeModulePkg/UiApp: Retrieve the value of language > menu > > In current UI code, we use oneof opcode without storage for language > menu. If we change the language form A->B, then go to another form and > then go back to the front page, the language menu always shows A. Now > we fix this issue by retrieving the value of oneof opcode(language menu) > when display it. > > Notes: > v1->V2: > -Change the subject from 'Get current language when open front page' > to 'Retrieve the value of language menu'. > -Get the value of oneof opcode(language menu) in retrieve callback instead > of geting the value when open the form. > > Cc: Liming Gao <liming....@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Dandan Bi <dandan...@intel.com> > Reviewed-by: Eric Dong <eric.d...@intel.com> > --- > .../Application/UiApp/FrontPageCustomizedUiSupport.c | 13 > +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git > a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c > b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c > index dc5d1c6..da0cff7 100644 > --- a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c > +++ > b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c > @@ -54,10 +54,11 @@ typedef struct { > > CHAR8 *gLanguageString; > EFI_STRING_ID *gLanguageToken; > UI_HII_DRIVER_INSTANCE *gHiiDriverList; > extern EFI_HII_HANDLE gStringPackHandle; > +UINT8 gCurrentLanguageIndex; > > > /** > Get next language from language code list (with separator ';'). > > @@ -128,10 +129,11 @@ LanguageChangeHandler ( > LangCode = gLanguageString; > while (*LangCode != 0) { > GetNextLanguage (&LangCode, Lang); > > if (Index == Value->u8) { > + gCurrentLanguageIndex = Value->u8; > break; > } > > Index++; > } > @@ -188,10 +190,20 @@ UiSupportLibCallbackHandler ( > QuestionId != FRONT_PAGE_KEY_RESET && > QuestionId != FRONT_PAGE_KEY_LANGUAGE) { > return FALSE; > } > > + if (Action == EFI_BROWSER_ACTION_RETRIEVE) { > + if (QuestionId == FRONT_PAGE_KEY_LANGUAGE) { > + Value->u8 = gCurrentLanguageIndex; > + *Status = EFI_SUCCESS; > + } else { > + *Status = EFI_UNSUPPORTED; > + } > + return TRUE; > + } > + > if (Action != EFI_BROWSER_ACTION_CHANGED) { > // > // Do nothing for other UEFI Action. Only do call back when data is > changed. > // > *Status = EFI_UNSUPPORTED; > @@ -345,10 +357,11 @@ UiCreateLanguageMenu ( > gLanguageToken[OptionCount], > EFI_IFR_OPTION_DEFAULT, > EFI_IFR_NUMERIC_SIZE_1, > (UINT8) OptionCount > ); > + gCurrentLanguageIndex = (UINT8) OptionCount; > } else { > HiiCreateOneOfOptionOpCode ( > OptionsOpCodeHandle, > gLanguageToken[OptionCount], > 0, > -- > 1.9.5.msysgit.1
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel