From 31a32963b4047e54fa1af93e4bf28c99a72ed580 Mon Sep 17 00:00:00 2001 From: Borja Lorente Date: Wed, 13 Jul 2016 14:39:56 +0200 Subject: MACVENTURE: Fix dragged object move recognition --- engines/macventure/gui.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'engines/macventure') diff --git a/engines/macventure/gui.cpp b/engines/macventure/gui.cpp index 79df822eb0..7eccb16a95 100644 --- a/engines/macventure/gui.cpp +++ b/engines/macventure/gui.cpp @@ -56,7 +56,7 @@ enum { }; enum { - kDragThreshold = 1 + kDragThreshold = 5 }; static const Graphics::MenuData menuSubItems[] = { @@ -841,12 +841,17 @@ void Gui::moveDraggedObject(Common::Point target) { movement = true; } - // TODO establish an absolute distance, such as _draggedObj.pos.sqrDist(_draggedObj.startPos); - _draggedObj.hasMoved |= movement && (newPos.sqrDist(_draggedObj.pos) >= kDragThreshold); + // TODO FInd more elegant way of making pow2 + _draggedObj.hasMoved = movement && (_draggedObj.startPos.sqrDist(_draggedObj.pos) >= (kDragThreshold * kDragThreshold)); + + debug(4, "Dragged obj position: (%d, %d), mouse offset: (%d, %d), hasMoved: %d, dist: %d, threshold: %d", + _draggedObj.pos.x, _draggedObj.pos.y, + _draggedObj.mouseOffset.x, _draggedObj.mouseOffset.y, + _draggedObj.hasMoved, + _draggedObj.startPos.sqrDist(_draggedObj.pos), + kDragThreshold * kDragThreshold + ); - // TODO DELETE MEEE - debug("Dragged obj position: (%d, %d), mouse offset: (%d, %d)", - _draggedObj.pos.x, _draggedObj.pos.y, _draggedObj.mouseOffset.x, _draggedObj.mouseOffset.y); } WindowReference Gui::findWindowAtPoint(Common::Point point) { @@ -969,14 +974,14 @@ bool Gui::isRectInsideObject(Common::Rect target, ObjID obj) { return false; } -void Gui::selectDraggable(ObjID child, WindowReference origin, Common::Point startPos) { +void Gui::selectDraggable(ObjID child, WindowReference origin, Common::Point click) { if (_engine->isObjClickable(child) && _draggedObj.id == 0) { _draggedObj.hasMoved = false; _draggedObj.id = child; - _draggedObj.startPos = startPos; _draggedObj.startWin = origin; - _draggedObj.mouseOffset = (_engine->getObjPosition(child) + getWindowSurfacePos(origin)) - startPos; - _draggedObj.pos = startPos + _draggedObj.mouseOffset; + _draggedObj.mouseOffset = (_engine->getObjPosition(child) + getWindowSurfacePos(origin)) - click; + _draggedObj.pos = click + _draggedObj.mouseOffset; + _draggedObj.startPos = _draggedObj.pos; } } -- cgit v1.2.3