aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrenatofilho <renato.filho@openbossa.org>2010-09-24 15:58:43 -0300
committerrenatofilho <renato.filho@openbossa.org>2010-09-24 16:44:45 -0300
commit805824d4b637a240f5f26bde1f09d11780551950 (patch)
treef7beb2ae2db12455129fbf89f88f2abe64f8f1e3
parent6320bfa4fa3428d05785edc433ff9740799c938f (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.xml10
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml75
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&lt;QTableWidgetItem*&gt;)const" remove="all"/>
</object-type>
<object-type name="QTextDocument">