aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpysideqml
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-11-24 13:16:44 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-12-08 08:48:50 +0100
commitb10dd95b7c48845ae49244ab8a264ab0f6192368 (patch)
treefea98e5f4d06ac3e4c561d3c01e77af450eeed92 /sources/pyside6/libpysideqml
parentbbf07e5598245150b1151c4b563051239f8811b3 (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.cpp13
-rw-r--r--sources/pyside6/libpysideqml/pysideqmlregistertype.h16
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