Core: Fix that core settings like shortcuts were only saved at shutdown

Save them also whenever a settings save is requested, which e.g. also
happens when closing the options dialog.

Change-Id: Ic20f1007381a4d0a8157f17fd24c0d8ea24907ee
Task-number: QTCREATORBUG-16576
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2016-09-06 09:06:56 +02:00
parent add34759fa
commit b554829fd8
3 changed files with 19 additions and 8 deletions

View File

@@ -596,6 +596,7 @@ QString ICore::systemInformation()
void ICore::saveSettings()
{
emit m_instance->saveSettingsRequested();
m_mainwindow->saveSettings();
ICore::settings(QSettings::SystemScope)->sync();
ICore::settings(QSettings::UserScope)->sync();

View File

@@ -388,7 +388,7 @@ void MainWindow::closeEvent(QCloseEvent *event)
emit m_coreImpl->coreAboutToClose();
writeSettings();
saveWindowSettings();
m_navigationWidget->closeSubWidgets();
@@ -980,7 +980,7 @@ void MainWindow::readSettings()
m_rightPaneWidget->readSettings(settings);
}
void MainWindow::writeSettings()
void MainWindow::saveSettings()
{
QSettings *settings = PluginManager::settings();
settings->beginGroup(QLatin1String(settingsGroup));
@@ -988,6 +988,19 @@ void MainWindow::writeSettings()
if (!(m_overrideColor.isValid() && StyleHelper::baseColor() == m_overrideColor))
settings->setValue(QLatin1String(colorKey), StyleHelper::requestedBaseColor());
settings->endGroup();
DocumentManager::saveSettings();
ActionManager::saveSettings();
EditorManagerPrivate::saveSettings();
m_navigationWidget->saveSettings(settings);
}
void MainWindow::saveWindowSettings()
{
QSettings *settings = PluginManager::settings();
settings->beginGroup(QLatin1String(settingsGroup));
// On OS X applications usually do not restore their full screen state.
// To be able to restore the correct non-full screen geometry, we have to put
// the window out of full screen before saving the geometry.
@@ -999,11 +1012,6 @@ void MainWindow::writeSettings()
settings->setValue(QLatin1String(modeSelectorVisibleKey), ModeManager::isModeSelectorVisible());
settings->endGroup();
DocumentManager::saveSettings();
ActionManager::saveSettings();
EditorManagerPrivate::saveSettings();
m_navigationWidget->saveSettings(settings);
}
void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add,

View File

@@ -111,6 +111,8 @@ public:
void addPreCloseListener(const std::function<bool()> &listener);
void saveSettings();
signals:
void newItemDialogRunningChanged();
@@ -149,7 +151,7 @@ private:
void registerDefaultActions();
void readSettings();
void writeSettings();
void saveWindowSettings();
ICore *m_coreImpl;
QStringList m_aboutInformation;