From bd3b6f17e476d3da80283715fe8eef4665a2957a Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 18 Mar 2019 16:20:17 +0100 Subject: [PATCH] Fixed updating the cursor position when switching channels with the Channel+/- keys while the Channels menu is open --- HISTORY | 2 ++ menu.c | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index a89a8a5f..a11eb99e 100644 --- a/HISTORY +++ b/HISTORY @@ -9387,3 +9387,5 @@ Video Disk Recorder Revision History SI::ExtensionDescriptor (reported by Helmut Binder). - Fixed sorting recordings alphabetically. - Fixed dropping capabilities in case cap_sys_time is not available. +- Fixed updating the cursor position when switching channels with the Channel+/- keys + while the Channels menu is open. diff --git a/menu.c b/menu.c index b9133456..22bdab57 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.78 2018/07/16 09:29:57 kls Exp $ + * $Id: menu.c 4.79 2019/03/18 16:14:06 kls Exp $ */ #include "menu.h" @@ -576,7 +576,7 @@ eOSState cMenuChannels::ProcessKey(eKeys Key) break; default: if (state == osUnknown) { - switch (Key) { + switch (int(Key)) { case k0 ... k9: return Number(Key); case kOk: return Switch(); @@ -586,6 +586,20 @@ eOSState cMenuChannels::ProcessKey(eKeys Key) case kBlue: if (!HasSubMenu()) Mark(); break; + case kChanUp|k_Repeat: + case kChanUp: + case kChanDn|k_Repeat: + case kChanDn: { + LOCK_CHANNELS_READ; + int CurrentChannelNr = cDevice::CurrentChannel(); + for (cMenuChannelItem *ci = (cMenuChannelItem *)First(); ci; ci = (cMenuChannelItem *)ci->Next()) { + if (!ci->Channel()->GroupSep() && ci->Channel()->Number() == CurrentChannelNr) { + SetCurrent(ci); + Display(); + break; + } + } + } default: break; } }