forked from qt-creator/qt-creator
Save project settings when leaving the "projects" mode
This commit is contained in:
@@ -63,7 +63,9 @@ ModeManager *ModeManager::m_instance = 0;
|
||||
ModeManager::ModeManager(Internal::MainWindow *mainWindow, FancyTabWidget *modeStack) :
|
||||
m_mainWindow(mainWindow),
|
||||
m_modeStack(modeStack),
|
||||
m_signalMapper(new QSignalMapper(this))
|
||||
m_signalMapper(new QSignalMapper(this)),
|
||||
m_oldCurrent(-1)
|
||||
|
||||
{
|
||||
m_instance = this;
|
||||
|
||||
@@ -247,7 +249,11 @@ void ModeManager::currentTabChanged(int index)
|
||||
m_addedContexts = mode->context();
|
||||
foreach (const int context, m_addedContexts)
|
||||
core->addAdditionalContext(context);
|
||||
emit currentModeChanged(mode);
|
||||
IMode *oldMode = 0;
|
||||
if (m_oldCurrent >= 0)
|
||||
oldMode = m_modes.at(m_oldCurrent);
|
||||
m_oldCurrent = index;
|
||||
emit currentModeChanged(mode, oldMode);
|
||||
core->updateContext();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,9 @@ public:
|
||||
|
||||
signals:
|
||||
void currentModeAboutToChange(Core::IMode *mode);
|
||||
void currentModeChanged(Core::IMode *mode);
|
||||
|
||||
// the default argument '=0' is important for connects without the oldMode argument.
|
||||
void currentModeChanged(Core::IMode *mode, Core::IMode *oldMode = 0);
|
||||
|
||||
public slots:
|
||||
void activateMode(const QString &id);
|
||||
@@ -100,6 +102,7 @@ private:
|
||||
QVector<Command*> m_modeShortcuts;
|
||||
QSignalMapper *m_signalMapper;
|
||||
QList<int> m_addedContexts;
|
||||
int m_oldCurrent;
|
||||
};
|
||||
|
||||
} // namespace Core
|
||||
|
||||
@@ -1140,9 +1140,13 @@ void ProjectExplorerPlugin::updateWelcomePage()
|
||||
d->m_welcomePage->updateWelcomePage(welcomePageData);
|
||||
}
|
||||
|
||||
void ProjectExplorerPlugin::currentModeChanged(Core::IMode *)
|
||||
void ProjectExplorerPlugin::currentModeChanged(Core::IMode *mode, Core::IMode *oldMode)
|
||||
{
|
||||
if (mode && mode->id() == QLatin1String(Core::Constants::MODE_WELCOME))
|
||||
updateWelcomePage();
|
||||
if (oldMode == d->m_projectsMode) {
|
||||
savePersistentSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectExplorerPlugin::determineSessionToRestoreAtStartup()
|
||||
@@ -1189,7 +1193,8 @@ void ProjectExplorerPlugin::restoreSession()
|
||||
|
||||
// update welcome page
|
||||
Core::ModeManager *modeManager = Core::ModeManager::instance();
|
||||
connect(modeManager, SIGNAL(currentModeChanged(Core::IMode*)), this, SLOT(currentModeChanged(Core::IMode*)));
|
||||
connect(modeManager, SIGNAL(currentModeChanged(Core::IMode*, Core::IMode*)),
|
||||
this, SLOT(currentModeChanged(Core::IMode*, Core::IMode*)));
|
||||
connect(d->m_welcomePage, SIGNAL(requestSession(QString)), this, SLOT(loadSession(QString)));
|
||||
connect(d->m_welcomePage, SIGNAL(requestProject(QString)), this, SLOT(loadProject(QString)));
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ private slots:
|
||||
void addErrorToApplicationOutputWindow(RunControl *, const QString &error);
|
||||
|
||||
void loadProject(const QString &project) { openProject(project); }
|
||||
void currentModeChanged(Core::IMode *mode);
|
||||
void currentModeChanged(Core::IMode *mode, Core::IMode *oldMode);
|
||||
void updateActions();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user