From 3ad81fcdaaa9155a83f0d9112ba6f0b324312346 Mon Sep 17 00:00:00 2001 From: renatofilho Date: Wed, 13 Oct 2010 16:43:15 -0300 Subject: Used original object in parent dictionary. This allow use the object as arguments in any functions. Reviewer: Luciano Wolf Marcelo Lira --- PySide/QtUiTools/glue/uitools_loadui.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'PySide') diff --git a/PySide/QtUiTools/glue/uitools_loadui.h b/PySide/QtUiTools/glue/uitools_loadui.h index 5729b5f30..8f6df633c 100644 --- a/PySide/QtUiTools/glue/uitools_loadui.h +++ b/PySide/QtUiTools/glue/uitools_loadui.h @@ -18,7 +18,7 @@ _populate_parent(PyObject* pyParent, QObject *parent) bool has_attr = PyObject_HasAttrString(pyParent, qPrintable(name)); Shiboken::AutoDecRef pyChild(Shiboken::Converter::toPython(child)); if (!has_attr) - PyObject_SetAttrString(pyParent, qPrintable(name), PyWeakref_NewProxy(pyChild, 0)); + PyObject_SetAttrString(pyParent, qPrintable(name), pyChild); Shiboken::setParent(pyParent, pyChild); _populate_parent(pyChild, qobject_cast(child)); @@ -31,16 +31,21 @@ quiloader_load_ui_from_device(QUiLoader* self, QIODevice* dev, QWidget *parent) { QWidget *w = self->load(dev, parent); if (w) { + QObject* _parent = parent; + if (!_parent) + _parent = w; + if (parent && parent->layout()) parent->layout()->deleteLater(); PyObject* pyParent = Shiboken::Converter::toPython(w); - _populate_parent(pyParent, w); + _populate_parent(pyParent, _parent); return pyParent; } - PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file"); + if (!PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file"); return 0; } @@ -66,6 +71,7 @@ quiloader_load_ui(QUiLoader* self, const QString &ui_file, QWidget *parent) return Shiboken::Converter::toPython(w); } } - PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file"); - return 0; + if (!PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file"); + return 0; } -- cgit v1.2.3