9
9
* Tranfer objects ownership from layout to widget
12
qwidgetReparentLayout(QWidget *parent, QLayout *layout)
11
static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
14
13
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
16
for (int i=0; i < layout->count(); i++)
18
QLayoutItem *item = layout->itemAt(i);
19
QWidget *w = item->widget();
15
for (int i=0; i < layout->count(); i++) {
16
QLayoutItem* item = layout->itemAt(i);
17
if (PyErr_Occurred() || !item)
20
QWidget* w = item->widget();
22
22
QWidget* pw = w->parentWidget();
23
23
if (pw != parent) {
24
24
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(w));
25
Shiboken::setParent(pyParent, pyChild);
25
Shiboken::Object::setParent(pyParent, pyChild);
30
QLayout *l = item->layout();
28
QLayout* l = item->layout();
32
30
qwidgetReparentLayout(parent, l);
36
34
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(layout));
37
Shiboken::setParent(pyParent, pyChild);
35
Shiboken::Object::setParent(pyParent, pyChild);
38
36
//remove previous references
39
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
37
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
43
qwidgetSetLayout(QWidget *self, QLayout *layout)
40
static inline void qwidgetSetLayout(QWidget *self, QLayout *layout)
45
42
if (!layout || self->layout())
50
47
if (oldParent->isWidgetType()) {
51
48
// remove old parent policy
52
49
Shiboken::AutoDecRef pyLayout(Shiboken::Converter<QLayout*>::toPython(layout));
53
Shiboken::setParent(Py_None, pyLayout);
50
Shiboken::Object::setParent(Py_None, pyLayout);
55
52
PyErr_Format(PyExc_RuntimeError, "QWidget::setLayout: Attempting to set QLayout \"%s\" on %s \"%s\", when the QLayout already has a parent",
56
53
qPrintable(layout->objectName()), self->metaObject()->className(), qPrintable(self->objectName()));