diff options
author | Daniel Teske <daniel.teske@nokia.com> | 2012-05-31 13:02:08 +0200 |
---|---|---|
committer | Daniel Teske <daniel.teske@nokia.com> | 2012-06-01 12:07:15 +0200 |
commit | 69a7b5e824221068f28402b994d4e1360f9f6336 (patch) | |
tree | ff67e551f0033b9b3285206947ea3d1e71a77734 | |
parent | a97d144a3394c90498b0c9c948094511faeea0e5 (diff) | |
download | qt-creator-69a7b5e824221068f28402b994d4e1360f9f6336.tar.gz |
SessionManager: Don't autosave the session while loading a session
Change-Id: I3ce769f9d9753b2771b349ad19a5b248a7f306d2
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 15 | ||||
-rw-r--r-- | src/plugins/projectexplorer/session.cpp | 17 | ||||
-rw-r--r-- | src/plugins/projectexplorer/session.h | 2 |
3 files changed, 25 insertions, 9 deletions
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index a50f5e753f..db615a0719 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1232,13 +1232,15 @@ void ProjectExplorerPlugin::savePersistentSettings() if (d->m_shuttingDown) return; - foreach (Project *pro, d->m_session->projects()) - pro->saveSettings(); + if (!d->m_session->loadingSession()) { + foreach (Project *pro, d->m_session->projects()) + pro->saveSettings(); - if (d->m_session->isDefaultVirgin()) { - // do not save new virgin default sessions - } else { - d->m_session->save(); + if (d->m_session->isDefaultVirgin()) { + // do not save new virgin default sessions + } else { + d->m_session->save(); + } } QSettings *s = Core::ICore::settings(); @@ -1492,7 +1494,6 @@ void ProjectExplorerPlugin::restoreSession() Core::ICore::openFiles(combinedList, Core::ICore::OpenFilesFlags(Core::ICore::CanContainLineNumbers | Core::ICore::SwitchMode)); updateActions(); - } void ProjectExplorerPlugin::loadSession(const QString &session) diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index dd5e376bc3..279e11fdfe 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -93,6 +93,7 @@ SessionManager::SessionManager(QObject *parent) m_sessionNode(new SessionNode(this)), m_sessionName(QLatin1String("default")), m_virginSession(true), + m_loadingSession(false), m_startupProject(0) { connect(ModeManager::instance(), SIGNAL(currentModeChanged(Core::IMode*)), @@ -291,6 +292,11 @@ void SessionManager::removeProject(Project *project) removeProjects(QList<Project*>() << project); } +bool SessionManager::loadingSession() +{ + return m_loadingSession; +} + bool SessionManager::save() { if (debug) @@ -810,17 +816,23 @@ bool SessionManager::loadSession(const QString &session) } } + m_loadingSession = true; + // Allow everyone to set something in the session and before saving emit aboutToUnloadSession(m_sessionName); if (!isDefaultVirgin()) { - if (!save()) + if (!save()) { + m_loadingSession = false; return false; + } } // Clean up - if (!ICore::editorManager()->closeAllEditors()) + if (!ICore::editorManager()->closeAllEditors()) { + m_loadingSession = false; return false; + } setStartupProject(0); removeProjects(projects()); @@ -872,6 +884,7 @@ bool SessionManager::loadSession(const QString &session) // Starts a event loop, better do that at the very end askUserAboutFailedProjects(); + m_loadingSession = false; return true; } diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h index c159920e45..8411e97783 100644 --- a/src/plugins/projectexplorer/session.h +++ b/src/plugins/projectexplorer/session.h @@ -123,6 +123,7 @@ public: QStringList projectsForSessionName(const QString &session) const; void reportProjectLoadingProgress(); + bool loadingSession(); signals: void projectAdded(ProjectExplorer::Project *project); void singleProjectAdded(ProjectExplorer::Project *project); @@ -167,6 +168,7 @@ private: mutable QStringList m_sessions; mutable QHash<Project *, QStringList> m_projectFileCache; + bool m_loadingSession; Project *m_startupProject; QList<Project *> m_projects; |