aboutsummaryrefslogtreecommitdiff
path: root/engines/macventure/gui.cpp
diff options
context:
space:
mode:
authorBorja Lorente2016-07-13 14:39:56 +0200
committerBorja Lorente2016-08-14 18:54:52 +0200
commit31a32963b4047e54fa1af93e4bf28c99a72ed580 (patch)
tree04b250bbfa3a4cdd0fe2e3a8be91eeee655e4b11 /engines/macventure/gui.cpp
parentd826fcb18b84f3e3eb3e4cad293122c9a44b9871 (diff)
downloadscummvm-rg350-31a32963b4047e54fa1af93e4bf28c99a72ed580.tar.gz
scummvm-rg350-31a32963b4047e54fa1af93e4bf28c99a72ed580.tar.bz2
scummvm-rg350-31a32963b4047e54fa1af93e4bf28c99a72ed580.zip
MACVENTURE: Fix dragged object move recognition
Diffstat (limited to 'engines/macventure/gui.cpp')
-rw-r--r--engines/macventure/gui.cpp25
1 files changed, 15 insertions, 10 deletions
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;
}
}