summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--menuitems.c47
3 files changed, 29 insertions, 23 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 17d5b778..bc2c6ab5 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -243,6 +243,7 @@ Simon Bauschulte <SemiSchwabe@Brutzel.de>
Andy Grobb <Charly98@01019freenet.de>
for completing storing the current audio volume in the setup.conf file
for fixing the EPG display in case Setup.ShowInfoOnChSwitch is set to "no"
+ for reporting a bug in handling min/max borders when entering integer values
Thomas Heiligenmann <thomas@heiligenmann.de>
for implementing the SVDRP commands LSTR and DELR
diff --git a/HISTORY b/HISTORY
index 41c0b501..5ca1a93a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1988,7 +1988,7 @@ Video Disk Recorder Revision History
reporting this one).
- Fixed support for Viaccess CAMs (thanks to Axel Gruber for helping to debug this).
-2003-04-06: Version 1.1.27
+2003-04-12: Version 1.1.27
- The CAM is now accessed only if the current channel actually has a non-zero Ca
value, and CAM access is completely suppressed during replay, which avoids
@@ -2015,3 +2015,5 @@ Video Disk Recorder Revision History
- Avoiding high CPU load in case the connection to LIRC gets lost (thanks to
Ludwig Nussel).
- Fixed handling repeat function with LIRC (thanks to Ludwig Nussel).
+- Fixed handling min/max borders when entering integer values (thanks to Andy
+ Grobb for reporting this one).
diff --git a/menuitems.c b/menuitems.c
index 56b91995..d680ff9c 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.c 1.12 2003/01/18 13:34:40 kls Exp $
+ * $Id: menuitems.c 1.13 2003/04/12 09:21:33 kls Exp $
*/
#include "menuitems.h"
@@ -62,27 +62,30 @@ eOSState cMenuEditIntItem::ProcessKey(eKeys Key)
eOSState state = cMenuEditItem::ProcessKey(Key);
if (state == osUnknown) {
- int newValue;
- if (k0 <= Key && Key <= k9) {
- if (fresh) {
- *value = 0;
- fresh = false;
- }
- newValue = *value * 10 + (Key - k0);
- }
- else if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
- newValue = *value - 1;
- fresh = true;
- }
- else if (NORMALKEY(Key) == kRight) {
- newValue = *value + 1;
- fresh = true;
- }
- else {
- if (*value < min) { *value = min; Set(); }
- if (*value > max) { *value = max; Set(); }
- return state;
- }
+ int newValue = *value;
+ Key = NORMALKEY(Key);
+ switch (Key) {
+ case kNone: break;
+ case k0 ... k9:
+ if (fresh) {
+ *value = 0;
+ fresh = false;
+ }
+ newValue = *value * 10 + (Key - k0);
+ break;
+ case kLeft: // TODO might want to increase the delta if repeated quickly?
+ newValue = *value - 1;
+ fresh = true;
+ break;
+ case kRight:
+ newValue = *value + 1;
+ fresh = true;
+ break;
+ default:
+ if (*value < min) { *value = min; Set(); }
+ if (*value > max) { *value = max; Set(); }
+ return state;
+ }
if ((!fresh || min <= newValue) && newValue <= max) {
*value = newValue;
Set();