diff options
author | Tomi Korpipaa <tomi.korpipaa@qt.io> | 2018-03-19 09:50:18 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-03-19 09:16:50 +0000 |
commit | abb2cb96584f482441a2961caeb43b1469ce0d0c (patch) | |
tree | 10cf3ca85d2d84ad6ac4d75871c72c38a08c151e /src/Authoring/Studio/Render/StudioRenderer.cpp | |
parent | 2b3819c8e3cde79f5b31b042bcd1fc69e84527a2 (diff) |
Allow deselecting by clicking an empty spot in scene view
Task-number: QT3DS-374
Change-Id: I0a53bc9e774e94f46a7549d3243115d5cdadc290
Reviewed-by: Mahmoud Badri <mahmoud.badri@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 | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/Authoring/Studio/Render/StudioRenderer.cpp b/src/Authoring/Studio/Render/StudioRenderer.cpp index 23270a13..345d0bac 100644 --- a/src/Authoring/Studio/Render/StudioRenderer.cpp +++ b/src/Authoring/Studio/Render/StudioRenderer.cpp @@ -574,35 +574,36 @@ struct SRendererImpl : public IStudioRenderer, break; } if (inSenderType == SceneDragSenderType::SceneWindow - && m_Translation->GetPickArea(inPoint) == PickTargetAreas::Presentation) { + && m_Translation->GetPickArea(inPoint) == PickTargetAreas::Presentation) { m_RenderContext->BeginRender(); m_PickResult = m_Translation->Pick(inPoint, theSelectMode); m_RenderContext->EndRender(); // If we definitely did not pick a widget. if (m_PickResult.getType() == StudioPickValueTypes::Instance) { - qt3dsdm::Qt3DSDMInstanceHandle theHandle(m_PickResult.getData<Qt3DSDMInstanceHandle>()); - + qt3dsdm::Qt3DSDMInstanceHandle theHandle( + m_PickResult.getData<Qt3DSDMInstanceHandle>()); if (theHandle != m_Doc.GetSelectedInstance()) m_Doc.SelectDataModelObject(theHandle); - } else if (m_PickResult.getType() == StudioPickValueTypes::Guide) + } else if (m_PickResult.getType() == StudioPickValueTypes::Guide) { m_Doc.NotifySelectionChanged(m_PickResult.getData<qt3dsdm::Qt3DSDMGuideHandle>()); - else if (m_PickResult.getType() == StudioPickValueTypes::Path) { + } else if (m_PickResult.getType() == StudioPickValueTypes::Path) { SPathPick thePick = m_PickResult.getData<SPathPick>(); qt3dsdm::Qt3DSDMInstanceHandle theAnchorHandle = - m_Translation->GetAnchorPoint(thePick); - if (theAnchorHandle.Valid() && theAnchorHandle != m_Doc.GetSelectedInstance()) { + m_Translation->GetAnchorPoint(thePick); + if (theAnchorHandle.Valid() && theAnchorHandle != m_Doc.GetSelectedInstance()) m_Doc.SelectDataModelObject(theAnchorHandle); - } + } else if (m_PickResult.getType() == StudioPickValueTypes::UnknownValueType) { + m_Doc.DeselectAllItems(true); } RequestRender(); } else { qt3ds::foundation::Option<qt3dsdm::SGuideInfo> pickResult = - m_Translation->PickRulers(inPoint); - if (pickResult.hasValue() == false) + m_Translation->PickRulers(inPoint); + if (!pickResult.hasValue()) { m_Translation->PrepareForDrag(); - else { + } else { Q3DStudio::IDocumentEditor &docEditor( - m_UpdatableEditor.EnsureEditor(L"Create Guide", __FILE__, __LINE__)); + m_UpdatableEditor.EnsureEditor(L"Create Guide", __FILE__, __LINE__)); Qt3DSDMGuideHandle newGuide = docEditor.CreateGuide(*pickResult); m_PickResult = SStudioPickValue(newGuide); m_Doc.NotifySelectionChanged(newGuide); |