Fix Dock close event QLabel still running with no parent

This commit is contained in:
Alberto Fontán Correa 2017-07-03 10:30:39 +02:00 committed by Ogi
parent 8bd2fa87e1
commit 1f9ccccfd0

View File

@ -5,10 +5,10 @@ from ..widgets.VerticalLabel import VerticalLabel
from ..python2_3 import asUnicode
class Dock(QtGui.QWidget, DockDrop):
sigStretchChanged = QtCore.Signal()
sigClosed = QtCore.Signal(object)
def __init__(self, name, area=None, size=(10, 10), widget=None, hideTitle=False, autoOrientation=True, closable=False):
QtGui.QWidget.__init__(self)
DockDrop.__init__(self)
@ -68,9 +68,9 @@ class Dock(QtGui.QWidget, DockDrop):
}"""
self.setAutoFillBackground(False)
self.widgetArea.setStyleSheet(self.hStyle)
self.setStretch(*size)
if widget is not None:
self.addWidget(widget)
@ -82,7 +82,7 @@ class Dock(QtGui.QWidget, DockDrop):
return ['dock']
else:
return name == 'dock'
def setStretch(self, x=None, y=None):
"""
Set the 'target' size for this Dock.
@ -109,7 +109,7 @@ class Dock(QtGui.QWidget, DockDrop):
if 'center' in self.allowedAreas:
self.allowedAreas.remove('center')
self.updateStyle()
def showTitleBar(self):
"""
Show the title bar for this Dock.
@ -130,7 +130,7 @@ class Dock(QtGui.QWidget, DockDrop):
Sets the text displayed in title bar for this Dock.
"""
self.label.setText(text)
def setOrientation(self, o='auto', force=False):
"""
Sets the orientation of the title bar for this Dock.
@ -149,7 +149,7 @@ class Dock(QtGui.QWidget, DockDrop):
self.orientation = o
self.label.setOrientation(o)
self.updateStyle()
def updateStyle(self):
## updates orientation and appearance of title bar
if self.labelHidden:
@ -192,7 +192,7 @@ class Dock(QtGui.QWidget, DockDrop):
self.update()
action = self.drag.exec_()
self.updateStyle()
def float(self):
self.area.floatDock(self)
@ -223,6 +223,7 @@ class Dock(QtGui.QWidget, DockDrop):
def close(self):
"""Remove this dock from the DockArea it lives inside."""
self.setParent(None)
QtGui.QLabel.close(self.label)
self.label.setParent(None)
self._container.apoptose()
self._container = None
@ -247,10 +248,10 @@ class Dock(QtGui.QWidget, DockDrop):
class DockLabel(VerticalLabel):
sigClicked = QtCore.Signal(object, object)
sigCloseClicked = QtCore.Signal()
def __init__(self, text, dock, showCloseButton):
self.dim = False
self.fixedWidth = False
@ -277,7 +278,7 @@ class DockLabel(VerticalLabel):
fg = '#fff'
bg = '#66c'
border = '#55B'
if self.orientation == 'vertical':
self.vStyle = """DockLabel {
background-color : %s;
@ -311,7 +312,7 @@ class DockLabel(VerticalLabel):
if self.dim != d:
self.dim = d
self.updateStyle()
def setOrientation(self, o):
VerticalLabel.setOrientation(self, o)
self.updateStyle()
@ -321,12 +322,12 @@ class DockLabel(VerticalLabel):
self.pressPos = ev.pos()
self.startedDrag = False
ev.accept()
def mouseMoveEvent(self, ev):
if not self.startedDrag and (ev.pos() - self.pressPos).manhattanLength() > QtGui.QApplication.startDragDistance():
self.dock.startDrag()
ev.accept()
def mouseReleaseEvent(self, ev):
ev.accept()
if not self.startedDrag:
@ -335,7 +336,7 @@ class DockLabel(VerticalLabel):
def mouseDoubleClickEvent(self, ev):
if ev.button() == QtCore.Qt.LeftButton:
self.dock.float()
def resizeEvent (self, ev):
if self.closeButton:
if self.orientation == 'vertical':