diff options
author | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-11-17 18:58:39 -0300 |
---|---|---|
committer | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-11-17 19:10:02 -0300 |
commit | 16913eedcec8c71b129dfcb029e0eb0fc50bb2a1 (patch) | |
tree | a4521603dcb18b467f6bc52df0f9c5f19b25465c /PySide/QtGui/glue/qwidget_glue.h | |
parent | 5a8efeb9df4271b0e1ec47bf231d2f23141d2375 (diff) |
Fix setLayout method that was causing segfault when itemAt wasn't implemented.
Reviewer: Hugo Parente <hugo.lima@openbossa.org>
Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'PySide/QtGui/glue/qwidget_glue.h')
-rw-r--r-- | PySide/QtGui/glue/qwidget_glue.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/PySide/QtGui/glue/qwidget_glue.h b/PySide/QtGui/glue/qwidget_glue.h index 0339e8980..d067d9f39 100644 --- a/PySide/QtGui/glue/qwidget_glue.h +++ b/PySide/QtGui/glue/qwidget_glue.h @@ -12,21 +12,20 @@ static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout) { Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent)); - for (int i=0; i < layout->count(); i++) - { - QLayoutItem *item = layout->itemAt(i); - QWidget *w = item->widget(); - if (w) - { + for (int i=0; i < layout->count(); i++) { + QLayoutItem* item = layout->itemAt(i); + if (PyErr_Occurred()) + return; + + QWidget* w = item->widget(); + if (w) { QWidget* pw = w->parentWidget(); if (pw != parent) { Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(w)); Shiboken::setParent(pyParent, pyChild); } - } - else - { - QLayout *l = item->layout(); + } else { + QLayout* l = item->layout(); if (l) qwidgetReparentLayout(parent, l); } @@ -58,6 +57,9 @@ static inline void qwidgetSetLayout(QWidget *self, QLayout *layout) if (oldParent != self) { qwidgetReparentLayout(self, layout); + if (PyErr_Occurred()) + return; + self->setLayout(layout); } } |