From 45428b5162afea4bb318222c7f2a37e2c7dfb6ba Mon Sep 17 00:00:00 2001 From: louis Date: Thu, 2 Jan 2014 11:45:43 +0100 Subject: Current channel positioned in middle of channellist when tvguide is opened --- tvguideosd.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'tvguideosd.c') 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(); } -- cgit v1.2.3