diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-12-10 08:29:47 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-12-10 07:39:29 +0000 |
commit | 69c3a54687eed3bca968aaba4efd87334df7304f (patch) | |
tree | 30924363394da5a33dbef3bbaf352d8f67529212 /src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp | |
parent | 659b2996c9ab6b3b0b556151b89bf04ea911cca1 (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.cpp | 16 |
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 |