diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-06-28 11:12:55 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-06-28 12:59:58 +0300 |
commit | f1f2afc17083eae1979b67d6d22f40bca13075e9 (patch) | |
tree | ef2ca8bfd9283f7943672fde75e963f113f3e66c /src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp | |
parent | 44b46a24048db25081d49c84448b89896cf4118a (diff) | |
parent | e77471bb4eb8de9c550e39ca4e2c80100372fa10 (diff) |
Merge "Merge branch '2.4'"
Diffstat (limited to 'src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp')
-rw-r--r-- | src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp index e73a0e24..e19a2dca 100644 --- a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp @@ -65,7 +65,6 @@ #include "SelectedValue.h" #include "Qt3DSDMInspectable.h" #include "Qt3DSDMSlides.h" -#include "Qt3DSDMMaterialInspectable.h" #include "GuideInspectable.h" #include <QtCore/qtimer.h> @@ -288,16 +287,23 @@ QString InspectorControlView::noneString() const bool InspectorControlView::canLinkProperty(int instance, int handle) const { - if (getBridge()->isInsideMaterialContainer(instance)) + if (!instance || !handle) return false; - if (getBridge()->IsMaterialBaseInstance(instance)) // all material types are unlinkable + if (getBridge()->isInsideMaterialContainer(instance)) return false; if (handle == getBridge()->GetSceneAsset().m_Eyeball.m_Property) // eyeball is unlinkable return false; CDoc *doc = g_StudioApp.GetCore()->GetDoc(); + + // Disallow linking of properties that refer to images as unlinking them is not trivial at all. + qt3dsdm::AdditionalMetaDataType::Value thePropertyMetaData = + doc->GetStudioSystem()->GetPropertySystem()->GetAdditionalMetaDataType(instance, handle); + if (thePropertyMetaData == qt3dsdm::AdditionalMetaDataType::Image) + return false; + return doc->GetDocumentReader().CanPropertyBeLinked(instance, handle); } @@ -397,8 +403,10 @@ void InspectorControlView::OnSelectionSet(Q3DStudio::SSelectedValue selectable) { CInspectableBase *inspectable = createInspectableFromSelectable(selectable); - if (inspectable && !inspectable->isValid()) + if (inspectable && !inspectable->isValid()) { + delete inspectable; inspectable = nullptr; + } setInspectable(inspectable); } @@ -433,8 +441,6 @@ CInspectableBase *InspectorControlView::createInspectableFromSelectable( ->GetSlideSystem()->GetSlideInstance(activeSlide); inspectableBase = new Qt3DSDMInspectable(selectedInstance, activeSlideInstance); - } else if (getBridge()->IsMaterialBaseInstance(selectedInstance)) { - inspectableBase = new Qt3DSDMMaterialInspectable(selectedInstance); } else { inspectableBase = new Qt3DSDMInspectable(selectedInstance); } @@ -459,6 +465,10 @@ void InspectorControlView::setInspectable(CInspectableBase *inInspectable) { if (m_inspectableBase != inInspectable) { m_activeBrowser.clear(); + + if (m_inspectableBase) + delete m_inspectableBase; + m_inspectableBase = inInspectable; m_inspectorControlModel->setInspectable(inInspectable); |