]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Enable value roll over when hit max or min.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 5 Jul 2011 08:28:23 +0000 (08:28 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 5 Jul 2011 08:28:23 +0000 (08:28 +0000)
Update the maximum value when input day field in date opcode.

Signed-off-by:ydong10
Reviewed-by:lgao4

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11977 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SetupBrowserDxe/InputHandler.c

index eee8eed24489a2913887657ddab79eb623bbb950..d31a9b9ddc5d79a3c1c0074316cd2a13b48dbfd4 100644 (file)
@@ -299,7 +299,27 @@ GetNumericInput (
       break;\r
 \r
     case 1:\r
-      Maximum = 31;\r
+      switch (QuestionValue->Value.date.Month) {\r
+      case 2:\r
+        if ((QuestionValue->Value.date.Year % 4) == 0  && \r
+            (QuestionValue->Value.date.Year % 100) != 0 && \r
+            (QuestionValue->Value.date.Year % 400) == 0) {\r
+          Maximum = 29;\r
+        } else {\r
+          Maximum = 28;\r
+        }\r
+        break;\r
+      case 4:\r
+      case 6:\r
+      case 9:\r
+      case 11:\r
+        Maximum = 30;\r
+        break;\r
+      default:\r
+        Maximum = 31;\r
+        break;\r
+      } \r
+\r
       EraseLen = 3;\r
       EditValue = QuestionValue->Value.date.Day;\r
       break;\r
@@ -492,15 +512,20 @@ TheKey2:
 \r
         if ((Step != 0) && !ManualInput) {\r
           if (Key.ScanCode == SCAN_LEFT) {\r
-            if (EditValue > Step) {\r
+            if (EditValue >= Minimum + Step) {\r
               EditValue = EditValue - Step;\r
-            } else {\r
+            } else if (EditValue > Minimum){\r
               EditValue = Minimum;\r
+            } else {\r
+              EditValue = Maximum;\r
             }\r
           } else if (Key.ScanCode == SCAN_RIGHT) {\r
-            EditValue = EditValue + Step;\r
-            if (EditValue > Maximum) {\r
+            if (EditValue + Step <= Maximum) {\r
+              EditValue = EditValue + Step;\r
+            } else if (EditValue < Maximum) {\r
               EditValue = Maximum;\r
+            } else {\r
+              EditValue = Minimum;\r
             }\r
           }\r
 \r