diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index bfd7dcebf..92204b633 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -1535,17 +1535,21 @@ void CChannelList::virtual_zap_mode(bool up) } } -void CChannelList::quickZap(int key, bool /* cycle */) +bool CChannelList::quickZap(int key, bool /* cycle */) { if(chanlist.empty()) - return; + return true; unsigned int sl = selected; /* here selected value doesnt matter, zap will do adjust */ CZapitChannel* channel = getPrevNextChannel(key, sl); - if(channel) + bool ret = false; + if(channel && SameTP(channel)) { CNeutrinoApp::getInstance()->channelList->zapToChannel(channel); + ret = true; + } g_RCInput->clearRCMsg(); //FIXME test for n.103 + return ret; } void CChannelList::paintDetails(int index) diff --git a/src/gui/channellist.h b/src/gui/channellist.h index a44e8d417..4a3eaf0b6 100644 --- a/src/gui/channellist.h +++ b/src/gui/channellist.h @@ -162,7 +162,7 @@ public: int numericZap(int key); int show(); int exec(); - void quickZap(int key, bool cycle = false); + bool quickZap(int key, bool cycle = false); //int hasChannel(int nChannelNr); int hasChannelID(t_channel_id channel_id); void setSelected( int nChannelNr); // for adjusting bouquet's channel list after numzap or quickzap diff --git a/src/neutrino.cpp b/src/neutrino.cpp index acecfe9bc..0da0a957b 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1956,16 +1956,23 @@ void CNeutrinoApp::quickZap(int msg) StopSubtitles(); printf("CNeutrinoApp::quickZap haveFreeFrontend %d\n", CFEManager::getInstance()->haveFreeFrontend()); +#if 0 if(!CFEManager::getInstance()->haveFreeFrontend()) { res = channelList->numericZap(g_settings.key_zaphistory); StartSubtitles(res < 0); return; } +#endif + bool ret; if(!bouquetList->Bouquets.empty()) - bouquetList->Bouquets[bouquetList->getActiveBouquetNumber()]->channelList->quickZap(msg, g_settings.zap_cycle); + ret = bouquetList->Bouquets[bouquetList->getActiveBouquetNumber()]->channelList->quickZap(msg, g_settings.zap_cycle); else - channelList->quickZap(msg); + ret = channelList->quickZap(msg); + if (!ret) { + res = channelList->numericZap(g_settings.key_zaphistory); + StartSubtitles(res < 0); + } } void CNeutrinoApp::numericZap(int msg)