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 /menuitems.c | |
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
Diffstat (limited to 'menuitems.c')
-rw-r--r-- | menuitems.c | 28 |
1 files changed, 17 insertions, 11 deletions
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); |