diff options
author | Paulo Alcantara <pcacjr@gmail.com> | 2011-12-21 18:51:34 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:56:23 -0300 |
commit | 98be0df6a55b45538d107421fd557fb77f8ab92b (patch) | |
tree | 2b3bfe1c3437dade979c42aea5ab1fcef23cc0a4 | |
parent | b2b14fe9b70cb233b003425328ef1f4d8749c744 (diff) |
Fix BUG #1060 - "Subclassing of QUiLoader leads to "Internal C++ object
already deleted" exception"
See http://bugs.pyside.org/show_bug.cgi?id=1060.
Signed-off-by: Paulo Alcantara <pcacjr@gmail.com>
Reviewed-by: Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r-- | PySide/QtUiTools/typesystem_uitools.xml | 11 | ||||
-rw-r--r-- | tests/QtUiTools/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/QtUiTools/bug_1060.py | 18 | ||||
-rw-r--r-- | tests/QtUiTools/bug_1060.ui | 19 |
4 files changed, 44 insertions, 5 deletions
diff --git a/PySide/QtUiTools/typesystem_uitools.xml b/PySide/QtUiTools/typesystem_uitools.xml index c86ae4499..08e98bd52 100644 --- a/PySide/QtUiTools/typesystem_uitools.xml +++ b/PySide/QtUiTools/typesystem_uitools.xml @@ -70,27 +70,28 @@ %CPPSELF.addPluginPath(""); // force reload widgets </inject-code> </add-function> - <modify-function signature="createAction(QObject *, const QString&)"> + <modify-function signature="createAction(QObject*, const QString&)"> <modify-argument index="return"> <parent index="1" action="add"/> </modify-argument> </modify-function> - <modify-function signature="createActionGroup(QObject *, const QString&)"> + <modify-function signature="createActionGroup(QObject*, const QString&)"> <modify-argument index="return"> <parent index="1" action="add"/> </modify-argument> </modify-function> - <modify-function signature="createLayout(const QString&,QObject *, const QString&)"> + <modify-function signature="createLayout(const QString&, QObject*, const QString&)"> <modify-argument index="return"> <parent index="2" action="add"/> </modify-argument> </modify-function> - <modify-function signature="createWidget(const QString&,QWidget*, const QString&)"> + <modify-function signature="createWidget(const QString&, QWidget*, const QString&)"> <modify-argument index="return"> - <parent index="2" action="add"/> + <parent index="2" action="add"/> + <define-ownership class="target" owner="default"/> </modify-argument> </modify-function> diff --git a/tests/QtUiTools/CMakeLists.txt b/tests/QtUiTools/CMakeLists.txt index eecf3df8f..68ed7f134 100644 --- a/tests/QtUiTools/CMakeLists.txt +++ b/tests/QtUiTools/CMakeLists.txt @@ -8,5 +8,6 @@ PYSIDE_TEST(bug_909.py) PYSIDE_TEST(bug_913.py) PYSIDE_TEST(bug_958.py) PYSIDE_TEST(bug_965.py) +PYSIDE_TEST(bug_1060.py) PYSIDE_TEST(uiloader_test.py) PYSIDE_TEST(ui_test.py) diff --git a/tests/QtUiTools/bug_1060.py b/tests/QtUiTools/bug_1060.py new file mode 100644 index 000000000..8b5150194 --- /dev/null +++ b/tests/QtUiTools/bug_1060.py @@ -0,0 +1,18 @@ +''' unit test for BUG #1060 ''' + +from PySide.QtGui import QApplication +from PySide.QtUiTools import QUiLoader +from helper import adjust_filename + +class MyQUiLoader(QUiLoader): + def __init__(self): + super(MyQUiLoader, self).__init__() + + def createWidget(self, *args): + return super(MyQUiLoader, self).createWidget(*args) + +if __name__ == "__main__": + app = QApplication([]) + + ui = MyQUiLoader().load(adjust_filename("bug_1060.ui", __file__)) + ui.show() diff --git a/tests/QtUiTools/bug_1060.ui b/tests/QtUiTools/bug_1060.ui new file mode 100644 index 000000000..f4044a8c2 --- /dev/null +++ b/tests/QtUiTools/bug_1060.ui @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Dialog</class> + <widget class="QDialog" name="Dialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>100</width> + <height>100</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + </widget> + <resources/> + <connections/> +</ui> |