diff options
author | renatofilho <renato.filho@openbossa.org> | 2010-09-24 15:58:43 -0300 |
---|---|---|
committer | renatofilho <renato.filho@openbossa.org> | 2010-09-24 16:44:45 -0300 |
commit | 805824d4b637a240f5f26bde1f09d11780551950 (patch) | |
tree | f7beb2ae2db12455129fbf89f88f2abe64f8f1e3 | |
parent | 6320bfa4fa3428d05785edc433ff9740799c938f (diff) |
Fixed model view ownership rules.
Reviewer: Hugo Parente Lima <hugo.pl@gmail.com>
Luciano Wolf <luciano.wolf@openbossa.org>
-rw-r--r-- | PySide/QtCore/typesystem_core.xml | 10 | ||||
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 75 |
2 files changed, 35 insertions, 50 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 92a154cd5..0df47a9cf 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1717,7 +1717,7 @@ %3) ); // invalidate to avoid use of python object - Shiboken::BindingManager::instance().invalidateWrapper((Shiboken::SbkBaseWrapper *)pyTimer); + Shiboken::BindingManager::instance().destroyWrapper((Shiboken::SbkBaseWrapper *)pyTimer); timer->setSingleShot(true); timer->connect(timer, SIGNAL("timeout()"), timer, SLOT("deleteLater()")); timer->start(%1); @@ -1741,7 +1741,7 @@ SIGNAL(timeout()), pyargs[1]) ); - Shiboken::BindingManager::instance().invalidateWrapper((Shiboken::SbkBaseWrapper *)pyTimer); + Shiboken::BindingManager::instance().destroyWrapper((Shiboken::SbkBaseWrapper *)pyTimer); timer->start(%1); </inject-code> </add-function> @@ -1769,7 +1769,7 @@ signalInstance->source, signalSignature.object()) ); - Shiboken::BindingManager::instance().invalidateWrapper((Shiboken::SbkBaseWrapper *)pyTimer); + Shiboken::BindingManager::instance().destroyWrapper((Shiboken::SbkBaseWrapper *)pyTimer); timer->start(%1); </inject-code> </add-function> @@ -2288,13 +2288,13 @@ <modify-function signature="addAnimation(QAbstractAnimation*)"> <modify-argument index="1"> - <parent index="this" action="add"/> + <reference-count action="add"/> </modify-argument> </modify-function> <modify-function signature="removeAnimation(QAbstractAnimation*)"> <modify-argument index="1"> - <parent index="this" action="remove"/> + <reference-count action="remove"/> </modify-argument> </modify-function> diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 4581e1f6c..81e0a3340 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -1216,6 +1216,16 @@ <enum-type name="SelectionBehavior"/> <enum-type name="SelectionMode"/> <enum-type name="State"/> + <modify-function signature="setModel(QAbstractItemModel*)"> + <modify-argument index="1"> + <reference-count action="add"/> + </modify-argument> + </modify-function> + <modify-function signature="setSelectionModel(QItemSelectionModel*)"> + <modify-argument index="1"> + <reference-count action="add"/> + </modify-argument> + </modify-function> <modify-function signature="model() const"> <modify-argument index="return"> <!-- Defining ownership as "default" avoids the object to be automatically @@ -1480,11 +1490,6 @@ <modify-function signature="paintSection(QPainter*,QRect,int)const"> <modify-argument index="1" invalidate-after-use="yes"/> </modify-function> - <modify-function signature="setModel(QAbstractItemModel*)"> - <modify-argument index="1"> - <reference-count action="add"/> - </modify-argument> - </modify-function> </object-type> <object-type name="QIconEngine"> <modify-function signature="paint(QPainter*,QRect,QIcon::Mode,QIcon::State)"> @@ -1546,17 +1551,34 @@ </modify-argument> </modify-function> </object-type> - <object-type name="QItemEditorCreatorBase"/> + <object-type name="QItemEditorCreatorBase"> + <modify-function signature="createWidget(QWidget *) const"> + <modify-argument index="1" invalidate-after-use="yes"/> + </modify-function> + </object-type> <object-type name="QItemEditorFactory"> - <modify-function signature="registerEditor(QVariant::Type, QItemEditorCreatorBase *)"> + <modify-function signature="registerEditor(QVariant::Type, QItemEditorCreatorBase *)"> <modify-argument index="2"> - <define-ownership owner="c++"/> + <reference-count action="add"/> </modify-argument> + <inject-code> + BindingManager::instance().transferOwnershipToCpp(%PYARG_2); + </inject-code> </modify-function> <modify-function signature="setDefaultFactory(QItemEditorFactory *)"> <modify-argument index="1"> <define-ownership owner="c++"/> </modify-argument> + <inject-code> + //this function is static we need keep ref to default value, to be able to call python virtual functions + static PyObject* _defaultValue = 0; + %CPPSELF.%FUNCTION_NAME(%1); + Py_INCREF(%PYARG_1); + if (_defaultValue) + Py_DECREF(_defaultValue); + + _defaultValue = %PYARG_1; + </inject-code> </modify-function> </object-type> <object-type name="QItemSelectionModel"> @@ -1570,16 +1592,6 @@ <enum-type name="ViewMode"/> </object-type> <object-type name="QColumnView"> - <modify-function signature="setModel(QAbstractItemModel*)"> - <modify-argument index="1"> - <reference-count action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setSelectionModel(QItemSelectionModel*)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> <modify-function signature="setPreviewWidget(QWidget*)"> <modify-argument index="1"> <parent index="this" action="add"/> @@ -2063,17 +2075,6 @@ <parent index="this" action="add"/> </modify-argument> </modify-function> - <modify-function signature="setModel(QAbstractItemModel*)"> - <modify-argument index="1"> - <reference-count action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setSelectionModel(QItemSelectionModel*)"> - <modify-argument index="1"> - <no-null-pointer/> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> <modify-function signature="sortByColumn(int)" remove="all"/> <!--### Obsolete in 4.3--> </object-type> @@ -2145,17 +2146,6 @@ <modify-function signature="drawRow(QPainter*,QStyleOptionViewItem,QModelIndex)const"> <modify-argument index="1" invalidate-after-use="yes"/> </modify-function> - <modify-function signature="setModel(QAbstractItemModel*)"> - <modify-argument index="1"> - <reference-count action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setSelectionModel(QItemSelectionModel*)"> - <modify-argument index="1"> - <no-null-pointer/> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> <modify-function signature="sortByColumn(int)" remove="all"/> <!--### Obsolete in 4.3--> </object-type> @@ -3971,11 +3961,6 @@ </modify-function> <modify-function signature="setItemSelected(const QTableWidgetItem*,bool)" remove="all"/> <modify-function signature="isItemSelected(const QTableWidgetItem*)const" remove="all"/> - <modify-function signature="setModel(QAbstractItemModel*)"> - <modify-argument index="1"> - <reference-count action="add"/> - </modify-argument> - </modify-function> <modify-function signature="mimeData(const QList<QTableWidgetItem*>)const" remove="all"/> </object-type> <object-type name="QTextDocument"> |