summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Teske <daniel.teske@nokia.com>2012-05-31 13:02:08 +0200
committerDaniel Teske <daniel.teske@nokia.com>2012-06-01 12:07:15 +0200
commit69a7b5e824221068f28402b994d4e1360f9f6336 (patch)
treeff67e551f0033b9b3285206947ea3d1e71a77734
parenta97d144a3394c90498b0c9c948094511faeea0e5 (diff)
downloadqt-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.cpp15
-rw-r--r--src/plugins/projectexplorer/session.cpp17
-rw-r--r--src/plugins/projectexplorer/session.h2
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;