forked from qt-creator/qt-creator
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:
@@ -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()
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user