diff options
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 |
