fix bellow bug:
change checkbox from FALSE to TRUE.EFI_BROWSER_ACTION_CHANGED called
but when checkbox change back to FALSE,don't call EFI_BROWSER_ACTION_CHANGED
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17512
6f19259b-4bc3-4df7-8a09-
765794883524
//\r
// Get the question value.\r
//\r
//\r
// Get the question value.\r
//\r
- Status = GetQuestionValue(FormSet, Form, Question, GetSetValueWithHiiDriver);\r
+ Status = GetQuestionValue(FormSet, Form, Question, GetSetValueWithEditBuffer);\r
if (EFI_ERROR (Status)) {\r
GetTheVal = FALSE;\r
goto Done;\r
if (EFI_ERROR (Status)) {\r
GetTheVal = FALSE;\r
goto Done;\r
//\r
Status = ValueChangedValidation (gCurrentSelection->FormSet, gCurrentSelection->Form, Statement);\r
if (!EFI_ERROR (Status)) {\r
//\r
Status = ValueChangedValidation (gCurrentSelection->FormSet, gCurrentSelection->Form, Statement);\r
if (!EFI_ERROR (Status)) {\r
+ //\r
+ //check whether the question value changed compared with edit buffer before updating edit buffer\r
+ // if changed, set the ValueChanged flag to TRUE,in order to trig the CHANGED callback function\r
+ //\r
+ IsQuestionValueChanged(gCurrentSelection->FormSet, gCurrentSelection->Form, Statement, GetSetValueWithEditBuffer);\r
//\r
// According the spec, return value from call back of "changing" and \r
// "retrieve" should update to the question's temp buffer.\r
//\r
// According the spec, return value from call back of "changing" and \r
// "retrieve" should update to the question's temp buffer.\r
//\r
InternalStatus = ValueChangedValidation (gCurrentSelection->FormSet, gCurrentSelection->Form, Statement);\r
if (!EFI_ERROR (InternalStatus)) {\r
//\r
InternalStatus = ValueChangedValidation (gCurrentSelection->FormSet, gCurrentSelection->Form, Statement);\r
if (!EFI_ERROR (InternalStatus)) {\r
+ //\r
+ //check whether the question value changed compared with edit buffer before updating edit buffer\r
+ // if changed, set the ValueChanged flag to TRUE,in order to trig the CHANGED callback function\r
+ //\r
+ IsQuestionValueChanged(gCurrentSelection->FormSet, gCurrentSelection->Form, Statement, GetSetValueWithEditBuffer);\r
SetQuestionValue(FormSet, Form, Statement, GetSetValueWithEditBuffer);\r
}\r
}\r
SetQuestionValue(FormSet, Form, Statement, GetSetValueWithEditBuffer);\r
}\r
}\r
- //\r
- // Verify whether question value has checked, update the ValueChanged flag in Question.\r
- //\r
- IsQuestionValueChanged(gCurrentSelection->FormSet, gCurrentSelection->Form, Statement, GetSetValueWithBuffer);\r
\r
if (!EFI_ERROR (Status) && \r
(Statement->Operand != EFI_IFR_REF_OP) && \r
\r
if (!EFI_ERROR (Status) && \r
(Statement->Operand != EFI_IFR_REF_OP) && \r
// Only question value has been changed, browser will trig CHANGED callback.\r
//\r
ProcessCallBackFunction(Selection, Selection->FormSet, Selection->Form, Statement, EFI_BROWSER_ACTION_CHANGED, FALSE);\r
// Only question value has been changed, browser will trig CHANGED callback.\r
//\r
ProcessCallBackFunction(Selection, Selection->FormSet, Selection->Form, Statement, EFI_BROWSER_ACTION_CHANGED, FALSE);\r
+ //\r
+ //check whether the question value changed compared with buffer value\r
+ //if doesn't change ,set the ValueChanged flag to FALSE ,in order not to display the "configuration changed "information on the screen\r
+ //\r
+ IsQuestionValueChanged(gCurrentSelection->FormSet, gCurrentSelection->Form, Statement, GetSetValueWithBuffer);\r