At close: Fix that editors were removed even when canceling

Because the editor manager was asked first if it wants to
abort closing (because closing an editor failed), editors
were closed before any other close listener was asked.
Ask the editor manager last to avoid ending up with an
empty editor list when canceling for some other reason.

Change-Id: Ie56866cb668a717b7072d8092b4d86b7b3196d01
Task-number: QTCREATORBUG-14401
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Eike Ziller
2015-11-09 09:05:44 +01:00
parent f81dca4b38
commit 7be5ef0f5c
3 changed files with 10 additions and 4 deletions

View File

@@ -515,9 +515,6 @@ void EditorManagerPrivate::init()
connect(m_autoSaveTimer, SIGNAL(timeout()), SLOT(autoSave())); connect(m_autoSaveTimer, SIGNAL(timeout()), SLOT(autoSave()));
updateAutoSave(); updateAutoSave();
d->m_coreListener = new EditorClosingCoreListener();
ExtensionSystem::PluginManager::addObject(d->m_coreListener);
d->m_openEditorsFactory = new OpenEditorsViewFactory(); d->m_openEditorsFactory = new OpenEditorsViewFactory();
ExtensionSystem::PluginManager::addObject(d->m_openEditorsFactory); ExtensionSystem::PluginManager::addObject(d->m_openEditorsFactory);
@@ -539,7 +536,13 @@ void EditorManagerPrivate::init()
[]() -> int { []() -> int {
IEditor *editor = EditorManager::currentEditor(); IEditor *editor = EditorManager::currentEditor();
return editor ? editor->widget()->mapToGlobal(QPoint(0, 0)).y() : 0; return editor ? editor->widget()->mapToGlobal(QPoint(0, 0)).y() : 0;
}); });
}
void EditorManagerPrivate::extensionsInitialized()
{
d->m_coreListener = new EditorClosingCoreListener();
ExtensionSystem::PluginManager::addObject(d->m_coreListener);
} }
EditorManagerPrivate *EditorManagerPrivate::instance() EditorManagerPrivate *EditorManagerPrivate::instance()

View File

@@ -70,6 +70,8 @@ class EditorManagerPrivate : public QObject
public: public:
static EditorManagerPrivate *instance(); static EditorManagerPrivate *instance();
static void extensionsInitialized(); // only use from MainWindow
static EditorArea *mainEditorArea(); static EditorArea *mainEditorArea();
static EditorView *currentEditorView(); static EditorView *currentEditorView();
static void setCurrentEditor(IEditor *editor, bool ignoreNavigationHistory = false); static void setCurrentEditor(IEditor *editor, bool ignoreNavigationHistory = false);

View File

@@ -342,6 +342,7 @@ bool MainWindow::init(QString *errorMessage)
void MainWindow::extensionsInitialized() void MainWindow::extensionsInitialized()
{ {
EditorManagerPrivate::extensionsInitialized();
MimeTypeSettings::restoreSettings(); MimeTypeSettings::restoreSettings();
m_windowSupport = new WindowSupport(this, Context("Core.MainWindow")); m_windowSupport = new WindowSupport(this, Context("Core.MainWindow"));
m_windowSupport->setCloseActionEnabled(false); m_windowSupport->setCloseActionEnabled(false);