summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-12-10 08:29:47 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-12-10 07:39:29 +0000
commit69c3a54687eed3bca968aaba4efd87334df7304f (patch)
tree30924363394da5a33dbef3bbaf352d8f67529212 /src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp
parent659b2996c9ab6b3b0b556151b89bf04ea911cca1 (diff)
Close active chooser dialog when it goes out of context
A chooser is considered out of context when the property the chooser was opened for no longer has visible control for it. This change should ensure that user can never interact with invalid properties via the chooser dialogs. Task-number: QT3DS-2836 Change-Id: I6fca811cfccda0b0b4fbc0feb17935c3949f4f9f Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp
index 3ee2a01c..2335ba2d 100644
--- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp
+++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp
@@ -201,18 +201,18 @@ void InspectorControlModel::notifyInstancePropertyValue(qt3dsdm::Qt3DSDMInstance
Q_EMIT dataChanged(index(0), index(rowCount() - 1));
}
-QVariant InspectorControlModel::getPropertyValue(long instance, int handle)
+bool InspectorControlModel::hasInstanceProperty(long instance, int handle)
{
- for (int row = 0; row < m_groupElements.count(); ++row) {
- auto group = m_groupElements[row];
- for (int p = 0; p < group.controlElements.count(); ++p) {
- QVariant& element = group.controlElements[p];
+ for (const auto &group : qAsConst(m_groupElements)) {
+ for (const auto &element : qAsConst(group.controlElements)) {
InspectorControlBase *property = element.value<InspectorControlBase *>();
- if (property->m_property == qt3dsdm::CDataModelHandle(handle))
- return property->m_value;
+ if (property->m_property == qt3dsdm::CDataModelHandle(handle)
+ && property->m_instance == qt3dsdm::CDataModelHandle(instance)) {
+ return true;
+ }
}
}
- return {};
+ return false;
}
bool InspectorControlModel::isInsideMaterialContainer() const