summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-11-18 15:44:33 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-11-22 10:48:35 +0000
commitdbfdacecf4fe60ee85200510e325930272e0850e (patch)
tree69c7661805494867e44ac4607c33bd0ae39f0b32
parent3dd5e089b10c89446f34b01a0f535aa936719cb7 (diff)
downloadqt-creator-dbfdacecf4fe60ee85200510e325930272e0850e.tar.gz
QmlDesigner: Fix issues with MouseArea3D deactivation detection
Existing mouse grab is now released when MouseArea3D is deactivated or set to no longer grab the mouse. Various gizmos were also set to follow MouseArea3D's dragging property instead of keeping track of drag themselves. Change-Id: I49f968f20b26eb222fc8635b943e9144073fb164 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/DirectionalDraggable.qml4
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/PlanarDraggable.qml4
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/RotateRing.qml4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/mousearea3d.cpp14
4 files changed, 17 insertions, 9 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/DirectionalDraggable.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/DirectionalDraggable.qml
index 243744210e..7ccfaa9816 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/DirectionalDraggable.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/DirectionalDraggable.qml
@@ -34,7 +34,7 @@ Model {
property View3D view3D
property alias color: material.emissiveColor
property Node targetNode: null
- property bool dragging: false
+ property bool dragging: mouseAreaYZ.dragging || mouseAreaXZ.dragging
property bool active: false
readonly property bool hovering: mouseAreaYZ.hovering || mouseAreaXZ.hovering
@@ -61,7 +61,6 @@ Model {
_pointerPosPressed = mouseArea.mapPositionToScene(maskedPosition);
var sp = targetNode.scenePosition;
_targetStartPos = Qt.vector3d(sp.x, sp.y, sp.z);
- dragging = true;
pressed(mouseArea);
}
@@ -88,7 +87,6 @@ Model {
return;
released(mouseArea, calcRelativeDistance(mouseArea, scenePos));
- dragging = false;
}
MouseArea3D {
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/PlanarDraggable.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/PlanarDraggable.qml
index 7bb1085e65..bd4fcd388b 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/PlanarDraggable.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/PlanarDraggable.qml
@@ -34,7 +34,7 @@ Model {
property alias color: gizmoMaterial.emissiveColor
property alias priority: mouseArea.priority
property Node targetNode: null
- property bool dragging: false
+ property bool dragging: mouseArea.dragging
property bool active: false
readonly property bool hovering: mouseArea.hovering
@@ -65,7 +65,6 @@ Model {
_pointerPosPressed = mouseArea.mapPositionToScene(scenePos);
var sp = targetNode.scenePosition;
_targetStartPos = Qt.vector3d(sp.x, sp.y, sp.z);
- dragging = true;
pressed(mouseArea);
}
@@ -91,7 +90,6 @@ Model {
return;
released(mouseArea, calcRelativeDistance(mouseArea, scenePos));
- dragging = false;
}
MouseArea3D {
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/RotateRing.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/RotateRing.qml
index 634eb017c9..3d21f8fd6a 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/RotateRing.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/RotateRing.qml
@@ -33,7 +33,7 @@ Model {
property View3D view3D
property alias color: material.emissiveColor
property Node targetNode: null
- property bool dragging: false
+ property bool dragging: mouseAreaMain.dragging
property bool active: false
property alias hovering: mouseAreaMain.hovering
property alias priority: mouseAreaMain.priority
@@ -80,7 +80,6 @@ Model {
_targetPosOnScreen = view3D.mapFrom3DScene(targetNode.scenePosition);
_targetPosOnScreen.z = 0;
_pointerPosPressed = Qt.vector3d(screenPos.x, screenPos.y, 0);
- dragging = true;
_trackBall = angle < 0.1;
// Recreate vector so we don't follow the changes in targetNode.rotation
@@ -108,7 +107,6 @@ Model {
applyLocalRotation(screenPos);
rotateCommit();
- dragging = false;
currentAngle = 0;
currentMousePos = screenPos;
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/mousearea3d.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/mousearea3d.cpp
index a1e25dea3a..d571b24dcb 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/mousearea3d.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/mousearea3d.cpp
@@ -123,6 +123,13 @@ void MouseArea3D::setGrabsMouse(bool grabsMouse)
return;
m_grabsMouse = grabsMouse;
+
+ if (!m_grabsMouse && s_mouseGrab == this) {
+ setDragging(false);
+ setHovering(false);
+ s_mouseGrab = nullptr;
+ }
+
emit grabsMouseChanged();
}
@@ -132,6 +139,13 @@ void MouseArea3D::setActive(bool active)
return;
m_active = active;
+
+ if (!m_active && s_mouseGrab == this) {
+ setDragging(false);
+ setHovering(false);
+ s_mouseGrab = nullptr;
+ }
+
emit activeChanged();
}