summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-28 11:12:55 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-28 12:59:58 +0300
commitf1f2afc17083eae1979b67d6d22f40bca13075e9 (patch)
treeef2ca8bfd9283f7943672fde75e963f113f3e66c /src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp
parent44b46a24048db25081d49c84448b89896cf4118a (diff)
parente77471bb4eb8de9c550e39ca4e2c80100372fa10 (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.cpp22
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);