Commit ed22e001 authored by Jakob Leben's avatar Jakob Leben

qt4: prevent moving a node into itself

..or it magically eats itself up
parent 53cd4ad4
......@@ -255,28 +255,35 @@ bool PLModel::dropMimeData( const QMimeData *data, Qt::DropAction action,
}
else
{
QList<int> ids;
QList<playlist_item_t*> items;
while( !stream.atEnd() )
{
int id;
stream >> id;
ids.append(id);
}
int count = ids.size();
playlist_item_t *items[count];
for( int i = 0; i < count; i++ )
playlist_item_t *item = playlist_ItemGetById( p_playlist, id );
if( !item ) continue;
/* better not try to move a node into itself: */
if( item->i_children > 0 )
{
playlist_item_t *item = playlist_ItemGetById( p_playlist, ids[i] );
if( !item )
playlist_item_t *climber = p_parent;
while( climber )
{
PL_UNLOCK;
return false;
if( climber == item ) break;
climber = climber->p_parent;
}
if( climber ) continue;
}
items[i] = item;
items.append( item );
}
playlist_TreeMoveMany( p_playlist, count, items, p_parent,
int count = items.size();
if( count )
{
playlist_item_t *pp_items[count];
for( int i = 0; i < count; i++ ) pp_items[i] = items[i];
playlist_TreeMoveMany( p_playlist, count, pp_items, p_parent,
(row == -1 ? p_parent->i_children : row) );
}
}
PL_UNLOCK;
/*TODO: That's not a good idea to rebuild the playlist */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment