mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 06:07:37 +02:00
aFix crash in dragging artist, don't assume AlbumModel only contains albums as it's hacked to also contain artists.
This commit is contained in:
@@ -179,6 +179,7 @@ AlbumModel::mimeData( const QModelIndexList &indexes ) const
|
|||||||
QByteArray queryData;
|
QByteArray queryData;
|
||||||
QDataStream queryStream( &queryData, QIODevice::WriteOnly );
|
QDataStream queryStream( &queryData, QIODevice::WriteOnly );
|
||||||
|
|
||||||
|
bool isAlbumData = true;
|
||||||
foreach ( const QModelIndex& i, indexes )
|
foreach ( const QModelIndex& i, indexes )
|
||||||
{
|
{
|
||||||
if ( i.column() > 0 )
|
if ( i.column() > 0 )
|
||||||
@@ -186,16 +187,25 @@ AlbumModel::mimeData( const QModelIndexList &indexes ) const
|
|||||||
|
|
||||||
QModelIndex idx = index( i.row(), 0, i.parent() );
|
QModelIndex idx = index( i.row(), 0, i.parent() );
|
||||||
AlbumItem* item = itemFromIndex( idx );
|
AlbumItem* item = itemFromIndex( idx );
|
||||||
if ( item )
|
if ( item && !item->album().isNull() )
|
||||||
{
|
{
|
||||||
const album_ptr& album = item->album();
|
const album_ptr& album = item->album();
|
||||||
queryStream << album->artist()->name();
|
queryStream << album->artist()->name();
|
||||||
queryStream << album->name();
|
queryStream << album->name();
|
||||||
|
|
||||||
|
isAlbumData = true;
|
||||||
|
}
|
||||||
|
else if ( item && !item->artist().isNull() )
|
||||||
|
{
|
||||||
|
const artist_ptr& artist = item->artist();
|
||||||
|
queryStream << artist->name();
|
||||||
|
|
||||||
|
isAlbumData = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QMimeData* mimeData = new QMimeData();
|
QMimeData* mimeData = new QMimeData;
|
||||||
mimeData->setData( "application/tomahawk.metadata.album", queryData );
|
mimeData->setData( isAlbumData ? "application/tomahawk.metadata.album" : "application/tomahawk.metadata.artist", queryData );
|
||||||
|
|
||||||
return mimeData;
|
return mimeData;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user