Fixed QLayout family return policy.

Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>,
          Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
Renato Filho 2010-04-19 17:57:08 -03:00
commit 1ec8bf6f1e
2 changed files with 203 additions and 99 deletions

View file

@ -0,0 +1,51 @@
#ifndef QLAYOUT_HELP_FUNCTIONS
#define QLAYOUT_HELP_FUNCTIONS
void addLayoutOwnership(QLayout *layout, QLayoutItem *item);
inline void addLayoutOwnership(QLayout *layout, QWidget *widget)
{
//transfer ownership to parent widget
QWidget *parent = layout->parentWidget();
if (!parent)
return;
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
Shiboken::setParent(pyParent, pyChild);
}
inline void addLayoutOwnership(QLayout *layout, QLayout *other)
{
//transfer all children widgetes from other to layout parent widget
QWidget *parent = layout->parentWidget();
if (!parent)
return;
for (int i=0, i_max=layout->count(); i < i_max; i++) {
addLayoutOwnership(layout, layout->itemAt(i));
}
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
Shiboken::setParent(pyParent, pyChild);
}
inline void addLayoutOwnership(QLayout *layout, QLayoutItem *item)
{
QWidget *w = item->widget();
if (w)
addLayoutOwnership(layout, w);
else {
QLayout *l = item->layout();
if (l)
addLayoutOwnership(layout, l);
}
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayoutItem*>::toPython(item));
Shiboken::setParent(pyParent, pyChild);
}
#endif

View file

@ -1180,7 +1180,27 @@
<value-type name="QPrinterInfo"> <value-type name="QPrinterInfo">
<modify-function signature="operator=(const QPrinterInfo &amp;)" remove="all"/> <modify-function signature="operator=(const QPrinterInfo &amp;)" remove="all"/>
</value-type> </value-type>
<object-type name="QLayoutItem"/> <object-type name="QLayoutItem">
<modify-function signature="widget()">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="layout()">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="spacerItem()">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QPaintDevice"/> <object-type name="QPaintDevice"/>
<object-type name="QGraphicsItem"> <object-type name="QGraphicsItem">
<inject-code class="target" position="end"> <inject-code class="target" position="end">
@ -2262,171 +2282,204 @@
<modify-function signature="getColor(const QColor&amp;, QWidget*, const QString&amp;, QFlags&lt;QColorDialog::ColorDialogOption>)" allow-thread="yes" /> <modify-function signature="getColor(const QColor&amp;, QWidget*, const QString&amp;, QFlags&lt;QColorDialog::ColorDialogOption>)" allow-thread="yes" />
</object-type> </object-type>
<object-type name="QLayout"> <object-type name="QLayout">
<modify-function signature="addItem(QLayoutItem*)">
<modify-argument index="1"> <extra-includes>
<parent index="this" action="add"/> <include file-name="glue/qlayout_help_functions.h" location="local"/>
</modify-argument> </extra-includes>
</modify-function>
<modify-function signature="removeItem(QLayoutItem*)"> <modify-function signature="itemAt(int)const">
<modify-argument index="1"> <modify-argument index="return">
<parent index="this" action="remove"/> <define-ownership owner="default"/>
</modify-argument>
<inject-code class="target" position="end">
addLayoutOwnership(%CPPSELF, %0);
</inject-code>
</modify-function>
<modify-function signature="parentWidget()const">
<modify-argument index="this">
<parent index="return" action="add"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
<modify-function signature="takeAt(int)"> <modify-function signature="takeAt(int)">
<modify-argument index="return"> <modify-argument index="return">
<parent index="this" action="remove"/> <parent index="this" action="remove"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
<modify-function signature="addItem(QLayoutItem*)">
<inject-code class="target" position="beginning">
addLayoutOwnership(%CPPSELF, %1);
</inject-code>
</modify-function>
<modify-function signature="addWidget(QWidget *)"> <modify-function signature="addWidget(QWidget *)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<no-null-pointer/> addLayoutOwnership(%CPPSELF, %1);
<parent index="this" action="add"/> </inject-code>
</modify-argument>
</modify-function> </modify-function>
<modify-function signature="addChildWidget(QWidget *)"> <modify-function signature="addChildWidget(QWidget *)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<no-null-pointer/> addLayoutOwnership(%CPPSELF, %1);
<parent index="this" action="add"/> </inject-code>
</modify-argument>
</modify-function> </modify-function>
<modify-function signature="addChildLayout(QLayout*)"> <modify-function signature="addChildLayout(QLayout*)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<no-null-pointer/> addLayoutOwnership(%CPPSELF, %1);
<parent index="this" action="add"/> </inject-code>
</modify-argument>
</modify-function>
<modify-function signature="removeWidget(QWidget *)">
<modify-argument index="1">
<no-null-pointer/>
<parent index="this" action="add"/>
</modify-argument>
</modify-function> </modify-function>
<modify-function signature="setMenuBar(QWidget*)"> <modify-function signature="setMenuBar(QWidget*)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="getContentsMargins(int*,int*,int*,int*)const" remove="all" /> <modify-function signature="getContentsMargins(int*,int*,int*,int*)const" remove="all" />
<!--### Obsolete in 4.3--> <!--### Obsolete in 4.3-->
<!-- <modify-function signature="setMargin(int)" remove="all"/> --> <!-- <modify-function signature="setMargin(int)" remove="all"/> -->
<!--### Obsolete in 4.3--> <!--### Obsolete in 4.3-->
</object-type> </object-type>
<object-type name="QStackedLayout"> <object-type name="QStackedLayout">
<extra-includes>
<include file-name="glue/qlayout_help_functions.h" location="local"/>
</extra-includes>
<modify-function signature="addItem(QLayoutItem *)"> <modify-function signature="addItem(QLayoutItem *)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="itemAt(int)const"> <modify-function signature="itemAt(int)const">
<modify-argument index="return"> <modify-argument index="return">
<parent index="this" action="add"/> <define-ownership owner="default"/>
</modify-argument> </modify-argument>
<inject-code class="target" position="end">
addLayoutOwnership(%CPPSELF, %0);
</inject-code>
</modify-function> </modify-function>
<modify-function signature="addWidget(QWidget *)"> <modify-function signature="addWidget(QWidget *)">
<rename to="addStackedWidget"/> <rename to="addStackedWidget"/>
<modify-argument index="1"> <inject-code class="target" position="beginning">
<no-null-pointer/> addLayoutOwnership(%CPPSELF, %1);
<parent index="this" action="add"/> </inject-code>
</modify-argument>
</modify-function> </modify-function>
<modify-function signature="insertWidget(int,QWidget*)"> <modify-function signature="insertWidget(int,QWidget*)">
<modify-argument index="2"> <inject-code class="target" position="beginning">
<no-null-pointer/> addLayoutOwnership(%CPPSELF, %2);
<parent index="this" action="add"/> </inject-code>
</modify-argument>
</modify-function>
<modify-function signature="takeAt(int)">
<modify-argument index="return">
<parent index="this" action="remove"/>
</modify-argument>
</modify-function> </modify-function>
</object-type> </object-type>
<object-type name="QBoxLayout"> <object-type name="QBoxLayout">
<modify-function signature="addWidget(QWidget *, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <extra-includes>
<modify-argument index="1"> <include file-name="glue/qlayout_help_functions.h" location="local"/>
<parent index="this" action="add"/> </extra-includes>
<modify-function signature="itemAt(int)const">
<modify-argument index="return">
<define-ownership owner="default"/>
</modify-argument> </modify-argument>
<inject-code class="target" position="end">
addLayoutOwnership(%CPPSELF, %0);
</inject-code>
</modify-function>
<modify-function signature="addWidget(QWidget *, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<inject-code class="target" position="beginning">
addLayoutOwnership(%CPPSELF, %1);
</inject-code>
</modify-function> </modify-function>
<modify-function signature="addLayout(QLayout *, int)"> <modify-function signature="addLayout(QLayout *, int)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addItem(QLayoutItem *)"> <modify-function signature="addItem(QLayoutItem *)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<define-ownership owner="c++"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="insertWidget(int, QWidget *, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="insertWidget(int, QWidget *, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="2"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %2);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="insertLayout(int, QLayout *, int)"> <modify-function signature="insertLayout(int, QLayout *, int)">
<modify-argument index="2"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %2);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="insertItem(int, QLayoutItem *)"> <modify-function signature="insertItem(int, QLayoutItem *)">
<modify-argument index="2"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %2);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addSpacerItem(QSpacerItem*)"> <modify-function signature="addSpacerItem(QSpacerItem*)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="insertSpacerItem(int,QSpacerItem*)"> <modify-function signature="insertSpacerItem(int,QSpacerItem*)">
<modify-argument index="2"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %2);
</modify-argument> </inject-code>
</modify-function>
<modify-function signature="takeAt(int)">
<modify-argument index="return">
<parent index="this" action="remove"/>
</modify-argument>
</modify-function> </modify-function>
</object-type> </object-type>
<object-type name="QGridLayout"> <object-type name="QGridLayout">
<extra-includes>
<include file-name="glue/qlayout_help_functions.h" location="local"/>
</extra-includes>
<modify-function signature="addWidget(QWidget *)"> <modify-function signature="addWidget(QWidget *)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addWidget(QWidget *, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="addWidget(QWidget *, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addWidget(QWidget *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="addWidget(QWidget *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addLayout(QLayout *, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="addLayout(QLayout *, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function> </modify-function>
<modify-function signature="addLayout(QLayout *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="addLayout(QLayout *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</modify-argument> </inject-code>
</modify-function>
<modify-function signature="takeAt(int)">
<modify-argument index="return">
<parent index="this" action="remove"/>
</modify-argument>
</modify-function> </modify-function>
<modify-function signature="addItem(QLayoutItem *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)"> <modify-function signature="addItem(QLayoutItem *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
<modify-argument index="1"> <inject-code class="target" position="beginning">
<parent index="this" action="add"/> addLayoutOwnership(%CPPSELF, %1);
</inject-code>
</modify-function>
<modify-function signature="itemAt(int)const">
<modify-argument index="return">
<define-ownership owner="default"/>
</modify-argument> </modify-argument>
<inject-code class="target" position="end">
addLayoutOwnership(%CPPSELF, %0);
</inject-code>
</modify-function> </modify-function>
<modify-function signature="getItemPosition(int,int*,int*,int*,int*)" remove="all" /> <modify-function signature="getItemPosition(int,int*,int*,int*,int*)" remove="all" />
</object-type> </object-type>
<object-type name="QGraphicsView"> <object-type name="QGraphicsView">
<extra-includes> <extra-includes>
<include file-name="QPainterPath" location="global"/> <include file-name="QPainterPath" location="global"/>