From 45428b5162afea4bb318222c7f2a37e2c7dfb6ba Mon Sep 17 00:00:00 2001 From: louis Date: Thu, 2 Jan 2014 11:45:43 +0100 Subject: [PATCH] Current channel positioned in middle of channellist when tvguide is opened --- HISTORY | 2 ++ tvguideosd.c | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 862bed6..5dc53a9 100644 --- a/HISTORY +++ b/HISTORY @@ -98,3 +98,5 @@ Version 1.1.0 Tickets 1480 and 1486) - Added possibility to search for reruns in case of a timer conflict - Added timer Timeline view in red button recording menu +- Current channel positioned in middle of channellist when tvguide is + opened diff --git a/tvguideosd.c b/tvguideosd.c index 34a1d5a..a10cd01 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -74,6 +74,22 @@ void cTvGuideOsd::Show(void) { void cTvGuideOsd::drawOsd() { cPixmap::Lock(); cChannel *startChannel = Channels.GetByNumber(cDevice::CurrentChannel()); + int numBack = tvguideConfig.numGrids / 2; + int offset = 0; + const cChannel *newStartChannel = startChannel; + for (; newStartChannel ; newStartChannel = Channels.Prev(newStartChannel)) { + if (newStartChannel && !newStartChannel->GroupSep()) { + offset++; + } + if (offset == numBack) + break; + } + if (!newStartChannel) + newStartChannel = Channels.First(); + offset--; + if (offset < 0) + offset = 0; + if (tvguideConfig.displayStatusHeader) { statusHeader = new cStatusHeader(); statusHeader->Draw(); @@ -94,8 +110,8 @@ void cTvGuideOsd::drawOsd() { } footer->drawBlueButton(); osdManager.flush(); - readChannels(startChannel); - drawGridsChannelJump(); + readChannels(newStartChannel); + drawGridsChannelJump(offset); osdManager.flush(); cPixmap::Unlock(); }