diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 17d5b778..bc2c6ab5 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -243,6 +243,7 @@ Simon Bauschulte Andy Grobb 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 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();