aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysideproperty.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-03-02 12:49:30 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-03-03 16:17:42 +0100
commite39f31bbae4c6699d5919bc046d1b9616c3f55c3 (patch)
treec4bdb9aff0d88e974d97b796f347cb91fa73358c /sources/pyside6/libpyside/pysideproperty.cpp
parentfa0881ff37ed7bddffb088bff8fc9897f03ac425 (diff)
Store the type object in PySideProperty
The exact type information is required for QML grouped properties. Task-number: PYSIDE-1836 Change-Id: Id24cc1db355cee6fea88dfb4c1a67904c7e37bf3 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysideproperty.cpp')
-rw-r--r--sources/pyside6/libpyside/pysideproperty.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/sources/pyside6/libpyside/pysideproperty.cpp b/sources/pyside6/libpyside/pysideproperty.cpp
index 6525af32c..b7fd55d24 100644
--- a/sources/pyside6/libpyside/pysideproperty.cpp
+++ b/sources/pyside6/libpyside/pysideproperty.cpp
@@ -237,6 +237,8 @@ static int qpropertyTpInit(PyObject *self, PyObject *args, PyObject *kwds)
else
pData->doc.clear();
+ pData->pyTypeObject = type;
+ Py_XINCREF(pData->pyTypeObject);
pData->typeName = PySide::Signal::getTypeName(type);
if (pData->typeName.isEmpty())
@@ -310,9 +312,8 @@ _property_copy(PyObject *old, PyObject *get, PyObject *set, PyObject *reset, PyO
auto notify = pData->notify ? pData->notify : Py_None;
- PyObject *typeName = String::fromCString(pData->typeName);
PyObject *obNew = PyObject_CallFunction(type, const_cast<char *>("OOOOOsO" "bbb" "bbb"),
- typeName, get, set, reset, del, doc.data(), notify,
+ pData->pyTypeObject, get, set, reset, del, doc.data(), notify,
pData->designable, pData->scriptable, pData->stored,
pData->user, pData->constant, pData->final);
@@ -447,7 +448,7 @@ static int qpropertyClear(PyObject *self)
Py_CLEAR(data->freset);
Py_CLEAR(data->fdel);
Py_CLEAR(data->notify);
-
+ Py_XDECREF(data->pyTypeObject);
delete data;
reinterpret_cast<PySideProperty *>(self)->d = nullptr;
@@ -607,5 +608,10 @@ void setTypeName(PySideProperty *self, const char *typeName)
self->d->typeName = typeName;
}
+PyObject *getTypeObject(const PySideProperty *self)
+{
+ return self->d->pyTypeObject;
+}
+
} //namespace Property
} //namespace PySide