diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-11-24 13:16:44 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-12-08 08:48:50 +0100 |
| commit | b10dd95b7c48845ae49244ab8a264ab0f6192368 (patch) | |
| tree | fea98e5f4d06ac3e4c561d3c01e77af450eeed92 /sources/pyside6/libpysideqml | |
| parent | bbf07e5598245150b1151c4b563051239f8811b3 (diff) | |
Pyside6: Move the QuickRegisterItem helpers into libpysideqml
libpyside had some variables that were only used by Qt Qml/Quick.
Move them into libpysideqml.
Task-number: PYSIDE-1709
Change-Id: I8d794c1149bc35f5bd0d8c6aec9b222bb7f73bf5
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/libpysideqml')
| -rw-r--r-- | sources/pyside6/libpysideqml/pysideqmlregistertype.cpp | 13 | ||||
| -rw-r--r-- | sources/pyside6/libpysideqml/pysideqmlregistertype.h | 16 |
2 files changed, 28 insertions, 1 deletions
diff --git a/sources/pyside6/libpysideqml/pysideqmlregistertype.cpp b/sources/pyside6/libpysideqml/pysideqmlregistertype.cpp index bb7fa7706..cbacd5887 100644 --- a/sources/pyside6/libpysideqml/pysideqmlregistertype.cpp +++ b/sources/pyside6/libpysideqml/pysideqmlregistertype.cpp @@ -62,6 +62,8 @@ // Mutex used to avoid race condition on PySide::nextQObjectMemoryAddr. static QMutex nextQmlElementMutex; +static PySide::Qml::QuickRegisterItemFunction quickRegisterItemFunction = nullptr; + static void createInto(void *memory, void *type) { QMutexLocker locker(&nextQmlElementMutex); @@ -121,7 +123,6 @@ int qmlRegisterType(PyObject *pyObj, const char *uri, int versionMajor, // Allow registering Qt Quick items. bool registered = false; - QuickRegisterItemFunction quickRegisterItemFunction = getQuickRegisterItemFunction(); if (quickRegisterItemFunction) { registered = quickRegisterItemFunction(pyObj, uri, versionMajor, versionMinor, @@ -460,4 +461,14 @@ PyObject *qmlSingletonMacro(PyObject *pyObj) return pyObj; } +QuickRegisterItemFunction getQuickRegisterItemFunction() +{ + return quickRegisterItemFunction; +} + +void setQuickRegisterItemFunction(QuickRegisterItemFunction function) +{ + quickRegisterItemFunction = function; +} + } // namespace PySide::Qml diff --git a/sources/pyside6/libpysideqml/pysideqmlregistertype.h b/sources/pyside6/libpysideqml/pysideqmlregistertype.h index edd0e77e4..d77a67bdb 100644 --- a/sources/pyside6/libpysideqml/pysideqmlregistertype.h +++ b/sources/pyside6/libpysideqml/pysideqmlregistertype.h @@ -44,6 +44,11 @@ #include <sbkpython.h> +namespace QQmlPrivate +{ +struct RegisterType; +} + namespace PySide::Qml { @@ -107,6 +112,17 @@ PYSIDEQML_API PyObject *qmlAnonymousMacro(PyObject *pyObj); /// \param pyObj Python type to be registered PYSIDEQML_API PyObject *qmlSingletonMacro(PyObject *pyObj); + +// Used by QtQuick module to notify QtQml that custom QtQuick items can be registered. +using QuickRegisterItemFunction = + bool (*)(PyObject *pyObj, const char *uri, int versionMajor, + int versionMinor, const char *qmlName, + bool creatable, const char *noCreationReason, + QQmlPrivate::RegisterType *); + +PYSIDEQML_API QuickRegisterItemFunction getQuickRegisterItemFunction(); +PYSIDEQML_API void setQuickRegisterItemFunction(QuickRegisterItemFunction function); + } // namespace PySide::Qml #endif // PYSIDEQMLREGISTERTYPE_H |
