aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/designer/qquickdesignersupportitems.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2018-03-19 15:01:43 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2018-03-21 13:21:38 +0000
commit01a40e1f920b58f00d52ff4542f6ef9c606a9b03 (patch)
tree6dfef0668b8755da15571b512e49d6d50ba1942c /src/quick/designer/qquickdesignersupportitems.cpp
parent21301c1dbb00f4a2cd991e520423ed039b297ffb (diff)
Do not look up objects in deferred properties
If a property is a deferred property then skip it if searching for qobjects. This is not enough to avoid all asserts, but not reading deferred properties does make sense in any case. Task-number: QTBUG-67152 Change-Id: I495051745a5daf458909ff6c4cb5210597774ded Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src/quick/designer/qquickdesignersupportitems.cpp')
-rw-r--r--src/quick/designer/qquickdesignersupportitems.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/quick/designer/qquickdesignersupportitems.cpp b/src/quick/designer/qquickdesignersupportitems.cpp
index 9fadbb2122..82474827aa 100644
--- a/src/quick/designer/qquickdesignersupportitems.cpp
+++ b/src/quick/designer/qquickdesignersupportitems.cpp
@@ -94,11 +94,24 @@ static void allSubObjects(QObject *object, QObjectList &objectList)
objectList.append(object);
+ const QMetaObject *mo = object->metaObject();
+
+ QStringList deferredPropertyNames;
+ const int namesIndex = mo->indexOfClassInfo("DeferredPropertyNames");
+ if (namesIndex != -1) {
+ QMetaClassInfo classInfo = mo->classInfo(namesIndex);
+ deferredPropertyNames = QString::fromUtf8(classInfo.value()).split(QLatin1Char(','));
+ }
+
for (int index = QObject::staticMetaObject.propertyOffset();
index < object->metaObject()->propertyCount();
index++) {
+
QMetaProperty metaProperty = object->metaObject()->property(index);
+ if (deferredPropertyNames.contains(metaProperty.name()))
+ continue;
+
// search recursive in property objects
if (metaProperty.isReadable()
&& metaProperty.isWritable()