Browse Source

TreeWidget widgets properly removed in the clear routine

pull/115/head
Eugenio Parodi 3 years ago
parent
commit
78bfec0ecb
  1. 5
      TermTk/TTkWidgets/TTkModelView/treewidget.py
  2. 5
      TermTk/TTkWidgets/TTkModelView/treewidgetitem.py

5
TermTk/TTkWidgets/TTkModelView/treewidget.py

@ -70,7 +70,7 @@ class TTkTreeWidget(TTkAbstractScrollView):
self._lineColor = kwargs.get('lineColor', TTkCfg.theme.treeLineColor)
self.setMinimumHeight(1)
self.setFocusPolicy(TTkK.ClickFocus)
self._rootItem = None
self._rootItem = TTkTreeWidgetItem(expanded=True)
self.clear()
self.setPadding(1,0,0,0)
self.viewChanged.connect(self._viewChangedHandler)
@ -93,6 +93,9 @@ class TTkTreeWidget(TTkAbstractScrollView):
return self.size()
def clear(self):
# Remove all the widgets
for ri in self._rootItem.children():
ri.setParent(None)
if self._rootItem:
self._rootItem.dataChanged.disconnect(self._refreshCache)
self._rootItem = TTkTreeWidgetItem(expanded=True)

5
TermTk/TTkWidgets/TTkModelView/treewidgetitem.py

@ -115,7 +115,10 @@ class TTkTreeWidgetItem(TTkAbstractItemModel):
self._parentWidget = parent
if self._hasWidgets:
for widget in [w for w in self._widgets if w]:
parent.layout().addWidget(widget)
if parent:
parent.layout().addWidget(widget)
elif pw := widget.parentWidget():
pw.rootLayout().removeWidget(widget)
for c in self._children:
c.setParent(parent)

Loading…
Cancel
Save