diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-07-03 13:44:43 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-07-03 11:22:23 +0000 |
commit | e22da7c82c781f76ff77925e66b1b60422b05182 (patch) | |
tree | ae10b92cde92c4ccec59ec0b8e502b6c07586d48 /src/Authoring/Studio/Render/StudioRenderer.cpp | |
parent | cd2613ea77f41e553dfade4c04f77932191c1184 (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.cpp | 120 |
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 { |