diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2020-05-29 14:18:34 +0200 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2020-07-10 10:02:20 +0200 |
commit | aab3f9e732829692672f9bb3e54a209d9b5d97b1 (patch) | |
tree | b3508061d93fe278cbe7dbc7a136af86f018f8b9 /src/qml/qml/qqmlprivate.h | |
parent | 0cfb44bf2972dc006ec6042b676f86d6059d0890 (diff) |
Add userdata callback to qml registration
This is needed in order to remove PySide2's qml type limit.
Change-Id: I331d9e31574a744eb9085222d58ea8a8789e0e31
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlprivate.h')
-rw-r--r-- | src/qml/qml/qqmlprivate.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/qml/qml/qqmlprivate.h b/src/qml/qml/qqmlprivate.h index c5c524c27a..244396452b 100644 --- a/src/qml/qml/qqmlprivate.h +++ b/src/qml/qml/qqmlprivate.h @@ -151,7 +151,7 @@ namespace QQmlPrivate } template<typename T> - void createInto(void *memory) { new (memory) QQmlElement<T>; } + void createInto(void *memory, void *) { new (memory) QQmlElement<T>; } template<typename T> QObject *createSingletonInstance(QQmlEngine *, QJSEngine *) { return new T; } @@ -159,7 +159,7 @@ namespace QQmlPrivate template<typename T> QObject *createParent(QObject *p) { return new T(p); } - using CreateIntoFunction = void (*)(void *); + using CreateIntoFunction = void (*)(void *, void *); using CreateSingletonFunction = QObject *(*)(QQmlEngine *, QJSEngine *); using CreateParentFunction = QObject *(*)(QObject *); @@ -336,7 +336,9 @@ namespace QQmlPrivate QMetaType typeId; QMetaType listId; int objectSize; - void (*create)(void *); + // The second parameter of create is for userdata + void (*create)(void *, void *); + void *userdata; QString noCreationReason; const char *uri; @@ -366,7 +368,8 @@ namespace QQmlPrivate QMetaType typeId; QMetaType listId; int objectSize; - void (*create)(void *); + void (*create)(void *, void *); + void *userdata; const char *uri; QTypeRevision version; @@ -413,7 +416,7 @@ namespace QQmlPrivate QTypeRevision version; const char *typeName; - QJSValue (*scriptApi)(QQmlEngine *, QJSEngine *); + std::function<QJSValue(QQmlEngine *, QJSEngine *)> scriptApi; std::function<QObject*(QQmlEngine *, QJSEngine *)> qObjectApi; const QMetaObject *instanceMetaObject; @@ -623,7 +626,7 @@ namespace QQmlPrivate QMetaType::fromType<T*>(), QMetaType::fromType<QQmlListProperty<T>>(), int(sizeof(T)), - Constructors<T>::createInto, + Constructors<T>::createInto, nullptr, uri, QTypeRevision::fromMajorVersion(versionMajor), |