aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlprivate.h
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2020-05-29 14:18:34 +0200
committerMaximilian Goldstein <max.goldstein@qt.io>2020-07-10 10:02:20 +0200
commitaab3f9e732829692672f9bb3e54a209d9b5d97b1 (patch)
treeb3508061d93fe278cbe7dbc7a136af86f018f8b9 /src/qml/qml/qqmlprivate.h
parent0cfb44bf2972dc006ec6042b676f86d6059d0890 (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.h15
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),