diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2007-01-04 13:38:40 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2007-01-04 13:38:40 +0100 | 
| commit | dbd4c7329bc73fab8a45c4017bc8e9e30c2b4478 (patch) | |
| tree | 0e24179ce14b978e82f2273407ad86121c1804ec | |
| parent | 50ff4d3b792efb259810348d5e92311c58fccc81 (diff) | |
| download | vdr-dbd4c7329bc73fab8a45c4017bc8e9e30c2b4478.tar.gz vdr-dbd4c7329bc73fab8a45c4017bc8e9e30c2b4478.tar.bz2 | |
When entering text via the numeric keys, the characters are now checked against the allowed characters
| -rw-r--r-- | CONTRIBUTORS | 2 | ||||
| -rw-r--r-- | HISTORY | 2 | ||||
| -rw-r--r-- | menuitems.c | 28 | 
3 files changed, 21 insertions, 11 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d02a7edf..79c6e18b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2016,6 +2016,8 @@ Norbert Wentz <norbert.wentz@online.de>  Frank Schmirler <vdr@schmirler.de>   for fixing handling client side termination of SVDRP connections   for fixing assigning schedules to channels in case there is no initial EPG information + for making entering text via the numeric keys check the characters against the + allowed characters  Jörn Reder <joern@zyn.de>   for reporting that a recording may unnecessarily block a device with a CAM, while @@ -5021,3 +5021,5 @@ Video Disk Recorder Revision History  - Fixed a possible segfault if VDR gets terminated while a message is displayed    (thanks to Udo Richter).  - Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter). +- When entering text via the numeric keys, the characters are now checked against +  the allowed characters (thanks to Frank Schmirler). diff --git a/menuitems.c b/menuitems.c index 086668ee..366989dc 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.47 2006/07/30 09:09:30 kls Exp $ + * $Id: menuitems.c 1.48 2007/01/04 13:30:37 kls Exp $   */  #include "menuitems.h" @@ -461,13 +461,6 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)                            AdvancePos();                         currentChar = NULL;                         } -                    if (insert && newchar) { -                       // create a new character in insert mode -                       if (int(strlen(value)) < length - 1) { -                          memmove(value + pos + 1, value + pos, strlen(value) - pos + 1); -                          value[pos] = ' '; -                          } -                       }                      if (!currentChar || !*currentChar || *currentChar == '\t') {                         // find the beginning of the character map entry for Key                         int n = NORMALKEY(Key) - k0; @@ -476,15 +469,28 @@ eOSState cMenuEditStrItem::ProcessKey(eKeys Key)                               if (*currentChar++ == '\t')                                  n--;                               } +                       // find first allowed character +                       while (*currentChar && *currentChar != '\t' && !strchr(allowed, *currentChar)) +                             currentChar++;                         }                      if (*currentChar && *currentChar != '\t') { +                       if (insert && newchar) { +                          // create a new character in insert mode +                          if (int(strlen(value)) < length - 1) { +                             memmove(value + pos + 1, value + pos, strlen(value) - pos + 1); +                             value[pos] = ' '; +                             } +                          }                         value[pos] = *currentChar;                         if (uppercase)                            value[pos] = toupper(value[pos]); -                       currentChar++; +                       // find next allowed character +                       do { +                          currentChar++; +                          } while (*currentChar && *currentChar != '\t' && !strchr(allowed, *currentChar)); +                       newchar = false; +                       autoAdvanceTimeout.Set(AUTO_ADVANCE_TIMEOUT);                         } -                    newchar = false; -                    autoAdvanceTimeout.Set(AUTO_ADVANCE_TIMEOUT);                      }                   else                      return cMenuEditItem::ProcessKey(Key); | 
