Fixed reference leak on uiloader.
Fixes bug #392 Reviewer: Luciano Wolf <luciano.wolf@openbossa.org> Marcelo Lira <marcelo.lira@openbossa.org>
This commit is contained in:
parent
4c8660413a
commit
e71b215f0b
3 changed files with 66 additions and 5 deletions
|
|
@ -100,8 +100,11 @@ QWidget *PyCustomWidget::createWidget(QWidget *parent)
|
||||||
if (!pyParent) {
|
if (!pyParent) {
|
||||||
pyParent = Shiboken::Converter<QWidget*>::toPython(parent);
|
pyParent = Shiboken::Converter<QWidget*>::toPython(parent);
|
||||||
unkowParent = true;
|
unkowParent = true;
|
||||||
|
} else {
|
||||||
|
Py_INCREF(pyParent);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
pyParent = Py_None;
|
pyParent = Py_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import unittest
|
||||||
import os
|
import os
|
||||||
from helper import UsesQApplication
|
from helper import UsesQApplication
|
||||||
|
|
||||||
from PySide import QtCore, QtGui, QtDeclarative
|
from PySide import QtGui, QtDeclarative
|
||||||
from PySide.QtUiTools import QUiLoader
|
from PySide.QtUiTools import QUiLoader
|
||||||
|
|
||||||
class MyWidget(QtGui.QComboBox):
|
class MyWidget(QtGui.QComboBox):
|
||||||
|
|
@ -40,6 +40,16 @@ class BugTest(UsesQApplication):
|
||||||
self.assert_(isinstance(result.custom, MyWidget))
|
self.assert_(isinstance(result.custom, MyWidget))
|
||||||
self.assert_(result.custom.isPython())
|
self.assert_(result.custom.isPython())
|
||||||
|
|
||||||
|
def testPythonCustomWidgetsTwice(self):
|
||||||
|
w = QtGui.QWidget()
|
||||||
|
loader = QUiLoader()
|
||||||
|
loader.registerCustomWidget(MyWidget)
|
||||||
|
|
||||||
|
filePath = os.path.join(os.path.dirname(__file__), 'pycustomwidget2.ui')
|
||||||
|
result = loader.load(filePath, w)
|
||||||
|
self.assert_(isinstance(result.custom, MyWidget))
|
||||||
|
self.assert_(isinstance(result.custom2, MyWidget))
|
||||||
|
self.assert_(result.custom.isPython())
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
48
tests/QtUiTools/pycustomwidget2.ui
Normal file
48
tests/QtUiTools/pycustomwidget2.ui
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>qwidget</class>
|
||||||
|
<widget class="QWidget" name="qwidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<widget class="MyWidget" name="custom">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>79</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget class="MyWidget" name="custom2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>79</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>MyWidget</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>customwidget</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue