- break;\r
- case EFI_IFR_TYPE_NUM_SIZE_16:\r
- CNObj.SetMinMaxStepData ((UINT16) 0, (UINT16) -1 , (UINT16) 0);\r
- ShrinkSize = 18;\r
- break;\r
- case EFI_IFR_TYPE_NUM_SIZE_8:\r
- CNObj.SetMinMaxStepData ((UINT8) 0, (UINT8) -1 , (UINT8) 0);\r
- ShrinkSize = 21;\r
- break;\r
- default:\r
- break;\r
+ LFlags = (EDKII_IFR_NUMERIC_SIZE_BIT & Info.mVarTotalSize);\r
+ CNObj.SetFlagsForBitField (0, LFlags);\r
+ } else {\r
+ //\r
+ // Numeric doesn't support BOOLEAN data type.\r
+ // BOOLEAN type has the same data size to UINT8.\r
+ //\r
+ if (Info.mVarType == EFI_IFR_TYPE_BOOLEAN) {\r
+ Info.mVarType = EFI_IFR_TYPE_NUM_SIZE_8;\r
+ }\r
+ CNObj.SetFlags (0, Info.mVarType);\r
+ //\r
+ // Use maximum value not to limit the vaild value for the undefined question.\r
+ //\r
+ switch (Info.mVarType) {\r
+ case EFI_IFR_TYPE_NUM_SIZE_64:\r
+ CNObj.SetMinMaxStepData ((UINT64) 0, (UINT64) -1 , (UINT64) 0);\r
+ ShrinkSize = 0;\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ CNObj.SetMinMaxStepData ((UINT32) 0, (UINT32) -1 , (UINT32) 0);\r
+ ShrinkSize = 12;\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ CNObj.SetMinMaxStepData ((UINT16) 0, (UINT16) -1 , (UINT16) 0);\r
+ ShrinkSize = 18;\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ CNObj.SetMinMaxStepData ((UINT8) 0, (UINT8) -1 , (UINT8) 0);\r
+ ShrinkSize = 21;\r
+ break;\r
+ default:\r
+ break;\r
+ }\r