diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index 5e5b42ff80f..92fec715a9b 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -500,68 +500,69 @@ bool SessionManager::loadImpl(const QString &fileName)
if (debug)
qDebug() << "SessionManager - restoring session " << fileName << " ...";
- bool success = true;
if (isDefaultVirgin()) {
// do not save initial and virgin default session
} else if (!save() || !clear()) {
- success = false;
+ m_virginSession = false;
+ if (debug)
+ qDebug() << "SessionManager - restoring session returned " << false;
+ return false;
}
m_virginSession = false;
- if (success) {
- emit aboutToUnloadSession();
- delete m_file;
- m_file = new SessionFile;
- const QString &sessionName = sessionNameFromFileName(fileName);
- emit aboutToLoadSession(sessionName);
- m_sessionName = sessionName;
- updateWindowTitle();
- if (!m_file->load(fileName)) {
- QMessageBox::warning(0, tr("Error while restoring session"),
- tr("Could not restore session %1").arg(fileName));
- success = false;
- }
- // m_file->load() sets the m_file->startupProject
- // but doesn't emit this signal, so we do it here
- emit startupProjectChanged(m_file->m_startupProject);
+ emit aboutToUnloadSession();
+ delete m_file;
+ m_file = new SessionFile;
+ const QString &sessionName = sessionNameFromFileName(fileName);
+ emit aboutToLoadSession(sessionName);
+ m_sessionName = sessionName;
+ updateWindowTitle();
+ if (!m_file->load(fileName)) {
+ QMessageBox::warning(0, tr("Error while restoring session"),
+ tr("Could not restore session %1").arg(fileName));
+ if (debug)
+ qDebug() << "SessionManager - restoring session returned " << false;
- QStringList failedProjects = m_file->failedProjectFileNames();
- if (!failedProjects.isEmpty()) {
- QString fileList =
- QDir::toNativeSeparators(failedProjects.join(QLatin1String("
")));
- QMessageBox * box = new QMessageBox(QMessageBox::Warning,
- tr("Failed to restore project files"),
- tr("Could not restore the following project files:
%1").
- arg(fileList));
- QPushButton * keepButton = new QPushButton(tr("Keep projects in Session"), box);
- QPushButton * removeButton = new QPushButton(tr("Remove projects from Session"), box);
- box->addButton(keepButton, QMessageBox::AcceptRole);
- box->addButton(removeButton, QMessageBox::DestructiveRole);
+ return false;
+ }
+ // m_file->load() sets the m_file->startupProject
+ // but doesn't emit this signal, so we do it here
+ emit startupProjectChanged(m_file->m_startupProject);
- box->exec();
+ QStringList failedProjects = m_file->failedProjectFileNames();
+ if (!failedProjects.isEmpty()) {
+ QString fileList =
+ QDir::toNativeSeparators(failedProjects.join(QLatin1String("
")));
+ QMessageBox * box = new QMessageBox(QMessageBox::Warning,
+ tr("Failed to restore project files"),
+ tr("Could not restore the following project files:
%1").
+ arg(fileList));
+ QPushButton * keepButton = new QPushButton(tr("Keep projects in Session"), box);
+ QPushButton * removeButton = new QPushButton(tr("Remove projects from Session"), box);
+ box->addButton(keepButton, QMessageBox::AcceptRole);
+ box->addButton(removeButton, QMessageBox::DestructiveRole);
- if (box->clickedButton() == removeButton)
- m_file->clearFailedProjectFileNames();
- }
+ box->exec();
+
+ if (box->clickedButton() == removeButton)
+ m_file->clearFailedProjectFileNames();
}
- if (success) {
- // restore the active mode
- QString modeIdentifier = value(QLatin1String("ActiveMode")).toString();
- if (modeIdentifier.isEmpty())
- modeIdentifier = QLatin1String(Core::Constants::MODE_EDIT);
+ // restore the active mode
+ QString modeIdentifier = value(QLatin1String("ActiveMode")).toString();
+ if (modeIdentifier.isEmpty())
+ modeIdentifier = QLatin1String(Core::Constants::MODE_EDIT);
- ModeManager::activateMode(modeIdentifier);
- ModeManager::setFocusToCurrentMode();
+ ModeManager::activateMode(modeIdentifier);
+ ModeManager::setFocusToCurrentMode();
- emit sessionLoaded();
- }
+ emit sessionLoaded();
if (debug)
- qDebug() << "SessionManager - restoring session returned " << success;
+ qDebug() << "SessionManager - restoring session returned " << true;
- return success;
+ return true;
}
bool SessionManager::save()