summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Render/StudioRenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-07-03 13:44:43 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-07-03 11:22:23 +0000
commite22da7c82c781f76ff77925e66b1b60422b05182 (patch)
treeae10b92cde92c4ccec59ec0b8e502b6c07586d48 /src/Authoring/Studio/Render/StudioRenderer.cpp
parentcd2613ea77f41e553dfade4c04f77932191c1184 (diff)
Disable dragging from scene view when multiple objects are selected
Task-number: QT3DS-1954 Change-Id: Ifcdf6cd4e04d75e86f7510dc06ba45792e5d5a76 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/StudioRenderer.cpp')
-rw-r--r--src/Authoring/Studio/Render/StudioRenderer.cpp120
1 files changed, 61 insertions, 59 deletions
diff --git a/src/Authoring/Studio/Render/StudioRenderer.cpp b/src/Authoring/Studio/Render/StudioRenderer.cpp
index 62b92b72..d4313b99 100644
--- a/src/Authoring/Studio/Render/StudioRenderer.cpp
+++ b/src/Authoring/Studio/Render/StudioRenderer.cpp
@@ -755,71 +755,73 @@ struct SRendererImpl : public IStudioRenderer,
if (theCameraToolMode == 0) {
if (m_Doc.GetDocumentReader().IsInstance(m_Doc.GetSelectedInstance())) {
- bool rightClick = (inFlags & CHotKeys::MOUSE_RBUTTON) != 0;
- MovementTypes::Enum theMovement(MovementTypes::Unknown);
-
- switch (inToolMode) {
- default:
- QT3DS_ASSERT(false);
- break;
- case STUDIO_TOOLMODE_MOVE:
- if (rightClick)
- theMovement = MovementTypes::TranslateAlongCameraDirection;
- else
- theMovement = MovementTypes::Translate;
- break;
- case STUDIO_TOOLMODE_SCALE:
- if (rightClick)
- theMovement = MovementTypes::ScaleZ;
- else
- theMovement = MovementTypes::Scale;
- break;
- case STUDIO_TOOLMODE_ROTATE:
- if (rightClick)
- theMovement = MovementTypes::RotationAboutCameraDirection;
- else
- theMovement = MovementTypes::Rotation;
- break;
- }
-
- if (theMovement != MovementTypes::Unknown) {
- bool theLockToAxis = (inFlags & CHotKeys::MODIFIER_SHIFT) != 0;
-
- if (m_LastDragToolMode != MovementTypes::Unknown
- && theMovement != m_LastDragToolMode) {
- m_UpdatableEditor.RollbackEditor();
- m_MouseDownPoint = inPoint;
- }
-
- m_LastDragToolMode = theMovement;
+ if (m_Doc.getSelectedInstancesCount() == 1) {
+ bool rightClick = (inFlags & CHotKeys::MOUSE_RBUTTON) != 0;
+ MovementTypes::Enum theMovement(MovementTypes::Unknown);
- switch (theMovement) {
- case MovementTypes::TranslateAlongCameraDirection:
- m_Translation->TranslateSelectedInstanceAlongCameraDirection(
- m_MouseDownPoint, inPoint, m_UpdatableEditor);
+ switch (inToolMode) {
+ default:
+ QT3DS_ASSERT(false);
break;
- case MovementTypes::Translate:
- m_Translation->TranslateSelectedInstance(
- m_MouseDownPoint, inPoint, m_UpdatableEditor, theLockToAxis);
+ case STUDIO_TOOLMODE_MOVE:
+ if (rightClick)
+ theMovement = MovementTypes::TranslateAlongCameraDirection;
+ else
+ theMovement = MovementTypes::Translate;
break;
- case MovementTypes::ScaleZ:
- m_Translation->ScaleSelectedInstanceZ(m_MouseDownPoint, inPoint,
- m_UpdatableEditor);
+ case STUDIO_TOOLMODE_SCALE:
+ if (rightClick)
+ theMovement = MovementTypes::ScaleZ;
+ else
+ theMovement = MovementTypes::Scale;
break;
- case MovementTypes::Scale:
- m_Translation->ScaleSelectedInstance(m_MouseDownPoint, inPoint,
- m_UpdatableEditor);
- break;
- case MovementTypes::Rotation:
- m_Translation->RotateSelectedInstance(m_MouseDownPoint,
- m_PreviousMousePoint, inPoint,
- m_UpdatableEditor, theLockToAxis);
- break;
- case MovementTypes::RotationAboutCameraDirection:
- m_Translation->RotateSelectedInstanceAboutCameraDirectionVector(
- m_PreviousMousePoint, inPoint, m_UpdatableEditor);
+ case STUDIO_TOOLMODE_ROTATE:
+ if (rightClick)
+ theMovement = MovementTypes::RotationAboutCameraDirection;
+ else
+ theMovement = MovementTypes::Rotation;
break;
}
+
+ if (theMovement != MovementTypes::Unknown) {
+ bool theLockToAxis = (inFlags & CHotKeys::MODIFIER_SHIFT) != 0;
+
+ if (m_LastDragToolMode != MovementTypes::Unknown
+ && theMovement != m_LastDragToolMode) {
+ m_UpdatableEditor.RollbackEditor();
+ m_MouseDownPoint = inPoint;
+ }
+
+ m_LastDragToolMode = theMovement;
+
+ switch (theMovement) {
+ case MovementTypes::TranslateAlongCameraDirection:
+ m_Translation->TranslateSelectedInstanceAlongCameraDirection(
+ m_MouseDownPoint, inPoint, m_UpdatableEditor);
+ break;
+ case MovementTypes::Translate:
+ m_Translation->TranslateSelectedInstance(
+ m_MouseDownPoint, inPoint, m_UpdatableEditor, theLockToAxis);
+ break;
+ case MovementTypes::ScaleZ:
+ m_Translation->ScaleSelectedInstanceZ(m_MouseDownPoint, inPoint,
+ m_UpdatableEditor);
+ break;
+ case MovementTypes::Scale:
+ m_Translation->ScaleSelectedInstance(m_MouseDownPoint, inPoint,
+ m_UpdatableEditor);
+ break;
+ case MovementTypes::Rotation:
+ m_Translation->RotateSelectedInstance(
+ m_MouseDownPoint, m_PreviousMousePoint, inPoint,
+ m_UpdatableEditor, theLockToAxis);
+ break;
+ case MovementTypes::RotationAboutCameraDirection:
+ m_Translation->RotateSelectedInstanceAboutCameraDirectionVector(
+ m_PreviousMousePoint, inPoint, m_UpdatableEditor);
+ break;
+ }
+ }
}
}
} else {