diff options
| -rw-r--r-- | CONTRIBUTORS | 1 | ||||
| -rw-r--r-- | HISTORY | 4 | ||||
| -rw-r--r-- | menuitems.c | 47 | 
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 @@ -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(); | 
