diff --git a/src/libtomahawk/playlist/artistview.cpp b/src/libtomahawk/playlist/artistview.cpp index e0cc6d75a..42b6f63d1 100644 --- a/src/libtomahawk/playlist/artistview.cpp +++ b/src/libtomahawk/playlist/artistview.cpp @@ -164,11 +164,6 @@ ArtistView::onItemActivated( const QModelIndex& index ) m_model->setCurrentItem( item->index ); AudioEngine::instance()->playItem( m_proxyModel, item->result() ); } - else if ( !item->query().isNull() && item->query()->results().count() ) - { - m_model->setCurrentItem( item->index ); - AudioEngine::instance()->playItem( m_proxyModel, item->query()->results().first() ); - } } } @@ -337,6 +332,8 @@ ArtistView::onCustomContextMenu( const QPoint& pos ) if ( item && !item->result().isNull() ) queries << item->result()->toQuery(); + else if ( item && !item->query().isNull() ) + queries << item->query(); if ( item && !item->artist().isNull() ) artists << item->artist(); if ( item && !item->album().isNull() ) diff --git a/src/libtomahawk/playlist/treemodelitem.cpp b/src/libtomahawk/playlist/treemodelitem.cpp index a7dc0d1b4..5d0be385e 100644 --- a/src/libtomahawk/playlist/treemodelitem.cpp +++ b/src/libtomahawk/playlist/treemodelitem.cpp @@ -242,3 +242,16 @@ TreeModelItem::albumName() const return QString(); } + + +const Tomahawk::result_ptr& +TreeModelItem::result() const +{ + if ( m_result.isNull() && !m_query.isNull() ) + { + if ( m_query->results().count() ) + return m_query->results().first(); + } + + return m_result; +} diff --git a/src/libtomahawk/playlist/treemodelitem.h b/src/libtomahawk/playlist/treemodelitem.h index 1cf5a644c..7f6582f58 100644 --- a/src/libtomahawk/playlist/treemodelitem.h +++ b/src/libtomahawk/playlist/treemodelitem.h @@ -42,8 +42,8 @@ public: const Tomahawk::artist_ptr& artist() const { return m_artist; }; const Tomahawk::album_ptr& album() const { return m_album; }; - const Tomahawk::result_ptr& result() const { return m_result; }; const Tomahawk::query_ptr& query() const { return m_query; }; + const Tomahawk::result_ptr& result() const; bool isPlaying() { return m_isPlaying; } void setIsPlaying( bool b ) { m_isPlaying = b; emit dataChanged(); }