summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Render/StudioRenderer.cpp
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2018-06-05 11:40:35 +0300
committerTomi Korpipää <tomi.korpipaa@qt.io>2018-06-06 06:06:09 +0000
commit92595d941f06c64389426c4cb1c4af5f00f14f30 (patch)
treed3976978772ab7e9b410d3249db497dda0a26b51 /src/Authoring/Studio/Render/StudioRenderer.cpp
parentab606b574a978d6907e887d585df3de3be35ab0f (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.cpp11
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) {