diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-03-02 12:49:30 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-03-03 16:17:42 +0100 |
| commit | e39f31bbae4c6699d5919bc046d1b9616c3f55c3 (patch) | |
| tree | c4bdb9aff0d88e974d97b796f347cb91fa73358c /sources/pyside6/libpyside/pysideproperty.cpp | |
| parent | fa0881ff37ed7bddffb088bff8fc9897f03ac425 (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.cpp | 12 |
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 |
