Index: src/app/legend/qgslegend.cpp =================================================================== --- src/app/legend/qgslegend.cpp (revision 13576) +++ src/app/legend/qgslegend.cpp (working copy) @@ -356,20 +356,23 @@ mMousePressedFlag = false; - if ( !mItemBeingMoved ) + // move only if we have a valid item and drop place + // otherwise reset the stored values, to fix #699 + if ( !mItemBeingMoved || !mDropTarget ) { + mItemBeingMoved = NULL; + mDropTarget = NULL; return; } hideLine(); - QTreeWidgetItem *destItem = mDropTarget; - QgsLegendItem* origin = dynamic_cast( mItemBeingMoved ); mItemBeingMoved = NULL; QModelIndex oldIndex = indexFromItem( origin ); - QgsLegendItem* dest = dynamic_cast( destItem ); + QgsLegendItem* dest = dynamic_cast( mDropTarget ); + mDropTarget = NULL; // no change? if ( !dest || !origin || ( dest == origin ) )