Author: axeld Date: 2010-05-11 09:46:19 +0200 (Tue, 11 May 2010) New Revision: 36786 Changeset: http://dev.haiku-os.org/changeset/36786/haiku Modified: haiku/trunk/src/kits/tracker/PoseView.cpp Log: * Never choose a target pose in UpdateDropTarget() that is part of the currently dragged selection. This fixes the context menu popping up when you try to move around an icon a few pixels only. Modified: haiku/trunk/src/kits/tracker/PoseView.cpp =================================================================== --- haiku/trunk/src/kits/tracker/PoseView.cpp 2010-05-10 17:26:50 UTC (rev 36785) +++ haiku/trunk/src/kits/tracker/PoseView.cpp 2010-05-11 07:46:19 UTC (rev 36786) @@ -1732,7 +1732,7 @@ if (viewBounds.Intersects(poseBounds)) SynchronousUpdate(poseBounds); } - + if (indexPtr) *indexPtr = poseIndex; } @@ -4637,7 +4637,7 @@ return; ASSERT(srcWindow->PoseView()->TargetModel()); - + if (srcWindow->PoseView()->SelectionList()->CountItems() == 0) return; @@ -6184,7 +6184,7 @@ SelectPose(pose, index); break; } - + case B_FUNCTION_KEY: case B_INSERT: break; @@ -8962,11 +8962,14 @@ int32 index; BPose *targetPose = FindPose(mouseLoc, &index); + if (targetPose != NULL && DragSelectionContains(targetPose, dragMessage)) + targetPose = NULL; if ((fCursorCheck && targetPose == fDropTarget) - || (trackingContextMenu && !targetPose)) + || (trackingContextMenu && !targetPose)) { // no change return false; + } fCursorCheck = true; if (fDropTarget && !DragSelectionContains(fDropTarget, dragMessage)) @@ -8980,7 +8983,8 @@ targetModel = targetPose->TargetModel(); Model tmpTarget; if (targetModel && targetModel->IsSymLink() - && tmpTarget.SetTo(targetPose->TargetModel()->EntryRef(), true, true) == B_OK) + && tmpTarget.SetTo(targetPose->TargetModel()->EntryRef(), true, true) + == B_OK) targetModel = &tmpTarget; bool ignoreTypes = (modifiers() & B_CONTROL_KEY) != 0; @@ -9002,7 +9006,7 @@ entry_ref srcRef; if (targetModel->IsDirectory() && dragMessage->HasRef("refs") - && dragMessage->FindRef("refs", &srcRef) == B_OK) { + && dragMessage->FindRef("refs", &srcRef) == B_OK) { Model srcModel (&srcRef); if (!CheckDevicesEqual(&srcRef, targetModel) && !srcModel.IsVolume()