From 1e2eda9c47e2e091b5243f996fe3689dcfebede9 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Sun, 18 Jun 2017 05:13:28 -1000 Subject: [PATCH] Fix EditorSession not being released after tab is closed --- src/mcedit2/editorapp.py | 8 ++++++-- src/mcedit2/editorsession.py | 3 --- src/mcedit2/widgets/block_replacement_list.py | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mcedit2/editorapp.py b/src/mcedit2/editorapp.py index d543225..6d4bee6 100644 --- a/src/mcedit2/editorapp.py +++ b/src/mcedit2/editorapp.py @@ -589,12 +589,14 @@ class MCEditApp(QtGui.QApplication): for menu in previousSession.menus: menuBar.removeAction(menu.menuAction()) - if session is not None: + if session is None: + self.undoGroup.setActiveStack(None) + else: self.undoGroup.setActiveStack(session.undoStack) log.info("Adding session menus: %s", 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: if action is None: @@ -719,6 +721,8 @@ class MCEditApp(QtGui.QApplication): self.undoGroup.removeStack(session.undoStack) self.sessions.remove(session) session.dealloc() + del tab + del session gc.collect() else: self.tabWidget.removeTab(index) diff --git a/src/mcedit2/editorsession.py b/src/mcedit2/editorsession.py index f3bf27f..00a7bcf 100644 --- a/src/mcedit2/editorsession.py +++ b/src/mcedit2/editorsession.py @@ -547,9 +547,6 @@ class EditorSession(QtCore.QObject): self.worldEditor.close() self.worldEditor = None - # Break all reference cycles just to be absolutely sure. - self.__dict__.clear() - def _updateVersionsAndResourcePacks(self): self.mcVersionMapper = QtCore.QSignalMapper() self.mcVersionMapper.mapped[str].connect(self.changeMCVersion) diff --git a/src/mcedit2/widgets/block_replacement_list.py b/src/mcedit2/widgets/block_replacement_list.py index 1465695..4ab53ed 100644 --- a/src/mcedit2/widgets/block_replacement_list.py +++ b/src/mcedit2/widgets/block_replacement_list.py @@ -19,7 +19,7 @@ class BlockReplacementButton(QtGui.QWidget): super(BlockReplacementButton, self).__init__() self.replacementList = BlockReplacementList() - self.replacementDialog = QtGui.QDialog(QtGui.qApp.mainWindow) + self.replacementDialog = QtGui.QDialog() self.replacementOk = QtGui.QPushButton(self.tr("OK")) self.replacementOk.clicked.connect(self.replacementDialog.accept)