Changeset cba67ec6306e…
Parent 6536a00ad721…
by
Changes to 2 files · Browse files at cba67ec6306e Showing diff from parent 6536a00ad721 Diff from another changeset...
@@ -12,6 +12,7 @@ import stat
import tempfile
import re
+import weakref
from mercurial import extensions
@@ -751,9 +752,13 @@class DemandWidget(QWidget):
'Create a widget the first time it is shown'
- def __init__(self, createfunc, parent=None):
+ def __init__(self, createfuncname, createinst, parent=None):
super(DemandWidget, self).__init__(parent)
- self._createfunc = createfunc
+ # We store a reference to the create function name to avoid having a
+ # hard reference to the bound function, which prevents it being
+ # disposed. Weak references to bound functions don't work.
+ self._createfuncname = createfuncname
+ self._createinst = weakref.ref(createinst)
self._widget = None
vbox = QVBoxLayout()
vbox.setContentsMargins(*(0,)*4)
@@ -772,7 +777,8 @@ def get(self):
"""Returns the stored widget"""
if self._widget is None:
- self._widget = self._createfunc()
+ func = getattr(self._createinst(), self._createfuncname, None)
+ self._widget = func()
self.layout().addWidget(self._widget)
return self._widget
|
@@ -158,23 +158,23 @@ self.logTabIndex = idx = tt.addTab(w, qtlib.geticon('hg-log'), '')
tt.setTabToolTip(idx, _("Revision details"))
- self.commitDemand = w = DemandWidget(self.createCommitWidget)
+ self.commitDemand = w = DemandWidget('createCommitWidget', self)
self.commitTabIndex = idx = tt.addTab(w, qtlib.geticon('hg-commit'), '')
tt.setTabToolTip(idx, _("Commit"))
- self.syncDemand = w = DemandWidget(self.createSyncWidget)
+ self.syncDemand = w = DemandWidget('createSyncWidget', self)
self.syncTabIndex = idx = tt.addTab(w, qtlib.geticon('thg-sync'), '')
tt.setTabToolTip(idx, _("Synchronize"))
- self.manifestDemand = w = DemandWidget(self.createManifestWidget)
+ self.manifestDemand = w = DemandWidget('createManifestWidget', self)
self.manifestTabIndex = idx = tt.addTab(w, qtlib.geticon('hg-annotate'), '')
tt.setTabToolTip(idx, _('Manifest'))
- self.grepDemand = w = DemandWidget(self.createGrepWidget)
+ self.grepDemand = w = DemandWidget('createGrepWidget', self)
self.grepTabIndex = idx = tt.addTab(w, qtlib.geticon('hg-grep'), '')
tt.setTabToolTip(idx, _("Search"))
- self.mqDemand = w = DemandWidget(self.createMQWidget)
+ self.mqDemand = w = DemandWidget('createMQWidget', self)
if 'mq' in self.repo.extensions():
self.mqTabIndex = idx = tt.addTab(w, qtlib.geticon('thg-mq'), '')
tt.setTabToolTip(idx, _("Patch Queue"))
@@ -182,7 +182,7 @@ else:
self.mqTabIndex = -1
- self.pbranchDemand = w = DemandWidget(self.createPatchBranchWidget)
+ self.pbranchDemand = w = DemandWidget('createPatchBranchWidget', self)
if 'pbranch' in self.repo.extensions():
self.pbranchTabIndex = idx = tt.addTab(w, qtlib.geticon('branch'), '')
tt.setTabToolTip(idx, _("Patch Branch"))
|
Loading...