diff options
-rw-r--r-- | CONTRIBUTORS | 2 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | menu.c | 20 |
3 files changed, 23 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c1f5eb80..cccbc040 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -525,6 +525,8 @@ Jaakko Hyvätti <jaakko@hyvatti.iki.fi> for fixing recording overlapping timers on the same channel in case DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined for fixing the minimum lifespan of deleted recordings + for suggesting to improve channel switching in case of numerical input by switching + as soon as the channel is unique Dennis Noordsij <dennis.noordsij@wiral.com> for reporting a small glitch when switching channels @@ -2258,3 +2258,5 @@ Video Disk Recorder Revision History - Fixed a bug in channel switching after Left/Right has been pressed (thanks to Michael Walle for reporting this one). +- Improved channel switching in case of numerical input by switching as soon as + the channel is unique (suggested by Jaakko Hyvätti). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.257 2003/06/12 16:11:32 kls Exp $ + * $Id: menu.c 1.258 2003/06/13 14:31:15 kls Exp $ */ #include "menu.h" @@ -2742,6 +2742,24 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key) cChannel *channel = Channels.GetByNumber(number); DisplayChannel(channel); lastTime = time_ms(); + // Lets see if there can be any useful further input: + int n = channel ? number : 0; + while (channel && (channel = Channels.Next(channel)) != NULL) { + if (!channel->GroupSep()) { + if (channel->Number() > n) + n *= 10; + if (n <= channel->Number() && channel->Number() <= n + 9) { + n = 0; + break; + } + } + } + if (n > 0) { + // This channel is the only one that fits the input, so let's take it right away: + Interface->Flush(); // makes sure the user sees his last input + Channels.SwitchTo(number); + return osEnd; + } } } break; |