summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2019-12-16 10:11:02 +0100
committerTim Jenssen <tim.jenssen@qt.io>2019-12-17 10:08:00 +0000
commit2f2787c4a8518fc31086a2cf7b317dccdb3a1624 (patch)
tree606028d69be3999045352f1ee9b9e0cde7da43f6
parente5d4224fe447e1af538ca8a7fa83e621a7e62883 (diff)
downloadqt-creator-2f2787c4a8518fc31086a2cf7b317dccdb3a1624.tar.gz
QmlDesigner: Add workaround for QVector3D
For some reason the Qt meta system does not work reliable for QVector3D. It does work "rotation", but not for "pivot", despite the fact that both properties are defined in exactly the same way. This patch works around the main issue. There are still a few issues left, but at least the default is correct now. Task-number: QDS-1355 Change-Id: I75e2d3adff6967e89c6ce031d744baa12b5e8061 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp23
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h1
2 files changed, 22 insertions, 2 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp
index 83382fb198..2d2edeee4a 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp
@@ -571,11 +571,30 @@ QVariant ObjectNodeInstance::property(const PropertyName &name) const
return property.read();
}
+void ObjectNodeInstance::ensureVector3DDotProperties(PropertyNameList &list) const
+{
+ const PropertyNameList properties = { "rotation", "scale", "pivot" };
+ for (const auto &property : properties) {
+ if (list.contains(property) && instanceType(property) == "QVector3D") {
+ const PropertyNameList dotProperties = { "x", "y", "z" };
+ for (const auto &dotProperty : dotProperties) {
+ const PropertyName dotPropertyName = property + "." + dotProperty;
+ if (!list.contains(dotPropertyName))
+ list.append(dotPropertyName);
+ }
+ }
+ }
+}
+
PropertyNameList ObjectNodeInstance::propertyNames() const
{
+ PropertyNameList list;
if (isValid())
- return QmlPrivateGate::allPropertyNames(object());
- return PropertyNameList();
+ list = QmlPrivateGate::allPropertyNames(object());
+
+ ensureVector3DDotProperties(list);
+
+ return list;
}
QString ObjectNodeInstance::instanceType(const PropertyName &name) const
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h
index ced76dee58..d716c4d755 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h
@@ -209,6 +209,7 @@ protected:
static QVariant enumationValue(const Enumeration &enumeration);
void initializePropertyWatcher(const ObjectNodeInstance::Pointer &objectNodeInstance);
+ void ensureVector3DDotProperties(PropertyNameList &list) const;
private:
QString m_id;