diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2018-06-05 11:40:35 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-06-06 06:06:09 +0000 |
commit | 92595d941f06c64389426c4cb1c4af5f00f14f30 (patch) | |
tree | d3976978772ab7e9b410d3249db497dda0a26b51 /src/Authoring/Studio/Render/StudioRenderer.cpp | |
parent | ab606b574a978d6907e887d585df3de3be35ab0f (diff) |
Enable multiselection in the viewport
Ctrl + click objects in the viewport to toggle their selection status
Task-number: QT3DS-1408
Change-Id: Id5650c67781ccbb4384ab6a5d46c192b2e6bff19
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/StudioRenderer.cpp')
-rw-r--r-- | src/Authoring/Studio/Render/StudioRenderer.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Render/StudioRenderer.cpp b/src/Authoring/Studio/Render/StudioRenderer.cpp index be0bdf8c..dce48f51 100644 --- a/src/Authoring/Studio/Render/StudioRenderer.cpp +++ b/src/Authoring/Studio/Render/StudioRenderer.cpp @@ -596,8 +596,15 @@ struct SRendererImpl : public IStudioRenderer, if (m_PickResult.getType() == StudioPickValueTypes::Instance) { qt3dsdm::Qt3DSDMInstanceHandle theHandle( m_PickResult.getData<Qt3DSDMInstanceHandle>()); - if (theHandle != m_Doc.GetSelectedInstance()) - m_Doc.SelectDataModelObject(theHandle); + if (QApplication::keyboardModifiers() & Qt::ControlModifier) { + m_Doc.ToggleDataModelObjectToSelection(theHandle); + } else { + if (m_Doc.getSelectedInstancesCount() > 1) + m_Doc.DeselectAllItems(true); + + if (theHandle != m_Doc.GetSelectedInstance()) + m_Doc.SelectDataModelObject(theHandle); + } } else if (m_PickResult.getType() == StudioPickValueTypes::Guide) { m_Doc.NotifySelectionChanged(m_PickResult.getData<qt3dsdm::Qt3DSDMGuideHandle>()); } else if (m_PickResult.getType() == StudioPickValueTypes::Path) { |