From fd300d81d0593fb8b8ae50fb4be40b7b099bca9c Mon Sep 17 00:00:00 2001 From: dalthviz Date: Wed, 30 Mar 2022 12:38:31 -0500 Subject: [PATCH] Editor: Fix layout issue when closing with unsaved files --- spyder/api/plugin_registration/registry.py | 36 +++++++++++----------- spyder/app/mainwindow.py | 1 - 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/spyder/api/plugin_registration/registry.py b/spyder/api/plugin_registration/registry.py index ad779d53524..f5ea30586a3 100644 --- a/spyder/api/plugin_registration/registry.py +++ b/spyder/api/plugin_registration/registry.py @@ -530,6 +530,23 @@ def delete_all_plugins(self, excluding: Optional[Set[str]] = None, if not can_close: return False + # Delete Spyder 4 internal plugins + for plugin_name in set(self.internal_plugins): + if plugin_name not in excluding: + plugin_instance = self.plugin_registry[plugin_name] + if isinstance(plugin_instance, SpyderPlugin): + try: + plugin_instance.deleteLater() + except RuntimeError: + pass + can_close &= self.delete_plugin( + plugin_name, teardown=False) + if not can_close and not close_immediately: + break + + if not can_close: + return False + # Delete Spyder 5+ external plugins for plugin_name in set(self.external_plugins): if plugin_name not in excluding: @@ -565,24 +582,7 @@ def delete_all_plugins(self, excluding: Optional[Set[str]] = None, if not can_close and not close_immediately: return False - # Delete Spyder 4 internal plugins - for plugin_name in set(self.internal_plugins): - if plugin_name not in excluding: - plugin_instance = self.plugin_registry[plugin_name] - if isinstance(plugin_instance, SpyderPlugin): - try: - plugin_instance.close() - plugin_instance.deleteLater() - except RuntimeError: - pass - can_close &= self.delete_plugin( - plugin_name, teardown=False) - if not can_close and not close_immediately: - break - - if not can_close: - return False - + # Delete Spyder 5 internal plugins for plugin_name in set(self.internal_plugins): if plugin_name not in excluding: plugin_instance = self.plugin_registry[plugin_name] diff --git a/spyder/app/mainwindow.py b/spyder/app/mainwindow.py index 6ae4119c76c..25b60d8d78a 100644 --- a/spyder/app/mainwindow.py +++ b/spyder/app/mainwindow.py @@ -1535,7 +1535,6 @@ def closing(self, cancelable=False, close_immediately=False): # Open files/project, check unsaved files, etc. if self.editor is not None: try: - self.editor.close() self.editor.deleteLater() self.plugin_registry.delete_plugin( Plugins.Editor, teardown=False)