From b554829fd8daee50a0de6cb132d40d0c9abd6e94 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 6 Sep 2016 09:06:56 +0200 Subject: [PATCH] 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 --- src/plugins/coreplugin/icore.cpp | 1 + src/plugins/coreplugin/mainwindow.cpp | 22 +++++++++++++++------- src/plugins/coreplugin/mainwindow.h | 4 +++- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 74d66d9b48a..446b6d23af4 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -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(); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 634796aaa12..c67b3b2e3b0 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -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, diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index b2e374662d4..17504a6f235 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -111,6 +111,8 @@ public: void addPreCloseListener(const std::function &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;