diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2003-06-13 14:44:31 +0200 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2003-06-13 14:44:31 +0200 | 
| commit | bc16b8af539b3653a95e6345a8dddd444a4cab1e (patch) | |
| tree | f8d3797865443e1e321a26a3d5decd3065b80e07 | |
| parent | 68002f00378378a87dd7416959c1e1347e27a99d (diff) | |
| download | vdr-bc16b8af539b3653a95e6345a8dddd444a4cab1e.tar.gz vdr-bc16b8af539b3653a95e6345a8dddd444a4cab1e.tar.bz2 | |
Improved channel switching in case of numerical input
| -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; | 
