private void spriteList_DragDrop(object sender, DragEventArgs e)
{
SpriteManagerDragDropData dragged = (SpriteManagerDragDropData)e.Data.GetData(typeof(SpriteManagerDragDropData));
Point locationInControl = spriteList.PointToClient(new Point(e.X, e.Y));
bool putSpritesBeforeSelection = true;
ListViewItem nearestItem = spriteList.HitTest(locationInControl).Item;
if (nearestItem == null)
{
putSpritesBeforeSelection = false;
nearestItem = spriteList.FindNearestItem(SearchDirectionHint.Left, locationInControl);
if (nearestItem == null)
{
putSpritesBeforeSelection = true;
nearestItem = spriteList.FindNearestItem(SearchDirectionHint.Right, locationInControl);
}
}
if (nearestItem != null)
{
int nearestSprite = Convert.ToInt32(nearestItem.Text);
_currentFolder.Sprites = MoveSpritesIntoNewPositionInFolder(nearestSprite, putSpritesBeforeSelection, dragged);
RefreshSpriteDisplay();
}
}