From b8d65a49d8597913b05b022a19e638509c941aa7 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 31 Jan 2009 03:21:23 +0000 Subject: [PATCH] This should really fix #3393. Apparently I'm more sleep-deprived than I thought. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29096 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/tracker/PoseView.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index e247ba9c39..82a3a596b6 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -4360,7 +4360,7 @@ BPoseView::MoveSelectionInto(Model *destFolder, BContainerWindow *srcWindow, void BPoseView::MoveSelectionInto(Model *destFolder, BContainerWindow *srcWindow, BContainerWindow *destWindow, uint32 buttons, BPoint loc, bool forceCopy, - bool forceMove, bool createLink, bool relativeLink) + bool forceMove, bool createLink, bool relativeLink, BPoint clickPt, bool dropOnGrid) { AutoLock lock(srcWindow); if (!lock) @@ -4404,8 +4404,7 @@ BPoseView::MoveSelectionInto(Model *destFolder, BContainerWindow *srcWindow, if (targetView->ViewMode() == kListMode) // can't move in list view return; - - bool dropOnGrid = (modifiers() & B_COMMAND_KEY) != 0; + BPoint delta = loc - clickPt; int32 count = targetView->fSelectionList->CountItems(); for (int32 index = 0; index < count; index++) { BPose *pose = targetView->fSelectionList->ItemAt(index); @@ -4415,19 +4414,19 @@ BPoseView::MoveSelectionInto(Model *destFolder, BContainerWindow *srcWindow, // need to do this because bsearch uses top of pose // to locate pose to remove targetView->RemoveFromVSList(pose); - + BPoint location (pose->Location() + delta); BRect oldBounds(pose->CalcRect(targetView)); if (dropOnGrid) - loc = targetView->PinToGrid(loc, targetView->fGrid, targetView->fOffset); + location = targetView->PinToGrid(location, targetView->fGrid, targetView->fOffset); - pose->MoveTo(loc, targetView); + pose->MoveTo(location, targetView); - targetView->RemoveFromExtent(oldBounds); - targetView->AddToExtent(pose->CalcRect(targetView)); + targetView->RemoveFromExtent(oldBounds); + targetView->AddToExtent(pose->CalcRect(targetView)); - // remove and reinsert pose to keep VSlist sorted - targetView->AddToVSList(pose); - } + // remove and reinsert pose to keep VSlist sorted + targetView->AddToVSList(pose); + } return; } @@ -4521,7 +4520,9 @@ BPoseView::MoveSelectionTo(BPoint dropPt, BPoint clickPt, return; uint32 buttons = (uint32)window->CurrentMessage()->FindInt32("buttons"); - MoveSelectionInto(TargetModel(), srcWindow, window, buttons, dropPt, false); + bool pinToGrid = (modifiers() & B_COMMAND_KEY) != 0; + MoveSelectionInto(TargetModel(), srcWindow, window, buttons, dropPt, + false, false, false, false, clickPt, pinToGrid); }