When a floating Dock window is closed, the dock is now returned to its original DockArea

This commit is contained in:
Edward Barnard 2018-03-30 10:29:45 -07:00
parent b421cc2790
commit dc95f76332

View File

@ -47,6 +47,10 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
if dock is None: if dock is None:
dock = Dock(**kwds) dock = Dock(**kwds)
# store original area that the dock will return to when un-floated
if not self.temporary:
dock.orig_area = self
## Determine the container to insert this dock into. ## Determine the container to insert this dock into.
## If there is no neighbor, then the container is the top. ## If there is no neighbor, then the container is the top.
@ -371,5 +375,11 @@ class TempAreaWindow(QtGui.QWidget):
self.layout.addWidget(area) self.layout.addWidget(area)
def closeEvent(self, *args): def closeEvent(self, *args):
# restore docks to their original area
docks = self.dockarea.findAll()[1]
for dock in docks.values():
if hasattr(dock, 'orig_area'):
dock.orig_area.addDock(dock, )
# clear dock area, and close remaining docks
self.dockarea.clear() self.dockarea.clear()
QtGui.QWidget.closeEvent(self, *args) QtGui.QWidget.closeEvent(self, *args)