Fix EditorSession not being released after tab is closed

This commit is contained in:
David Vierra 2017-06-18 05:13:28 -10:00
parent 9abe610e9f
commit 1e2eda9c47
3 changed files with 7 additions and 6 deletions

View File

@ -589,12 +589,14 @@ class MCEditApp(QtGui.QApplication):
for menu in previousSession.menus: for menu in previousSession.menus:
menuBar.removeAction(menu.menuAction()) menuBar.removeAction(menu.menuAction())
if session is not None: if session is None:
self.undoGroup.setActiveStack(None)
else:
self.undoGroup.setActiveStack(session.undoStack) self.undoGroup.setActiveStack(session.undoStack)
log.info("Adding session menus: %s", session.menus) log.info("Adding session menus: %s", session.menus)
for menu in session.menus: for menu in session.menus:
menuBar.insertMenu(self.mainWindow.menuWindow.menuAction(), menu) menuBar.insertAction(self.mainWindow.menuWindow.menuAction(), menu.menuAction())
for action in session.topToolbarActions: for action in session.topToolbarActions:
if action is None: if action is None:
@ -719,6 +721,8 @@ class MCEditApp(QtGui.QApplication):
self.undoGroup.removeStack(session.undoStack) self.undoGroup.removeStack(session.undoStack)
self.sessions.remove(session) self.sessions.remove(session)
session.dealloc() session.dealloc()
del tab
del session
gc.collect() gc.collect()
else: else:
self.tabWidget.removeTab(index) self.tabWidget.removeTab(index)

View File

@ -547,9 +547,6 @@ class EditorSession(QtCore.QObject):
self.worldEditor.close() self.worldEditor.close()
self.worldEditor = None self.worldEditor = None
# Break all reference cycles just to be absolutely sure.
self.__dict__.clear()
def _updateVersionsAndResourcePacks(self): def _updateVersionsAndResourcePacks(self):
self.mcVersionMapper = QtCore.QSignalMapper() self.mcVersionMapper = QtCore.QSignalMapper()
self.mcVersionMapper.mapped[str].connect(self.changeMCVersion) self.mcVersionMapper.mapped[str].connect(self.changeMCVersion)

View File

@ -19,7 +19,7 @@ class BlockReplacementButton(QtGui.QWidget):
super(BlockReplacementButton, self).__init__() super(BlockReplacementButton, self).__init__()
self.replacementList = BlockReplacementList() self.replacementList = BlockReplacementList()
self.replacementDialog = QtGui.QDialog(QtGui.qApp.mainWindow) self.replacementDialog = QtGui.QDialog()
self.replacementOk = QtGui.QPushButton(self.tr("OK")) self.replacementOk = QtGui.QPushButton(self.tr("OK"))
self.replacementOk.clicked.connect(self.replacementDialog.accept) self.replacementOk.clicked.connect(self.replacementDialog.accept)