diff --git a/src/libtomahawk/playlist/TreeModel.cpp b/src/libtomahawk/playlist/TreeModel.cpp index 72cb8d61b..e4bb13fb2 100644 --- a/src/libtomahawk/playlist/TreeModel.cpp +++ b/src/libtomahawk/playlist/TreeModel.cpp @@ -606,7 +606,7 @@ TreeModel::fetchAlbums( const artist_ptr& artist ) emit loadingStarted(); connect( artist.data(), SIGNAL( albumsAdded( QList, Tomahawk::ModelMode ) ), - SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ) ); + SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ), Qt::UniqueConnection ); const QModelIndex parent = indexFromArtist( artist ); addAlbums( parent, artist->albums( m_mode, m_collection ) ); @@ -620,6 +620,9 @@ TreeModel::onAlbumsFound( const QList& albums, ModelMode mo return; const artist_ptr artist = qobject_cast< Artist* >( sender() )->weakRef().toStrongRef(); + disconnect( artist.data(), SIGNAL( albumsAdded( QList, Tomahawk::ModelMode ) ), + this, SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ) ); + const QModelIndex parent = indexFromArtist( artist ); addAlbums( parent, albums ); } diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index 49728a5f7..d3b71898d 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -132,7 +132,7 @@ void ArtistInfoWidget::onModeToggle() { m_albumsModel->setMode( m_button->isChecked() ? InfoSystemMode : DatabaseMode ); - m_albumsModel->addAlbums( QModelIndex(), m_artist->albums( m_albumsModel->mode() ) ); + m_albumsModel->fetchAlbums( m_artist ); }