aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-06-03 09:32:15 +0200
committerhjk <hjk@qt.io>2019-06-03 08:25:41 +0000
commit4742216febedb9f6fb6e8147e9a333abe236ab2f (patch)
treee30418351e14dfd8f50508d62b12743a109a6927 /src/plugins/coreplugin
parent23c222f61b260b56c10775197d6100f130d558b4 (diff)
Core: Give a hint why saving of settings are requested
Not all requests are the same, handling code might want to act differently on different request reasons. Main driver here is the handling of the debugger/analyzer main window state savings which depends on actual visibility of certain windows. Change-Id: I87b2a9149e3d09d27bc14b44aace9f2e0686db04 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r--src/plugins/coreplugin/dialogs/settingsdialog.cpp2
-rw-r--r--src/plugins/coreplugin/icore.cpp6
-rw-r--r--src/plugins/coreplugin/icore.h11
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp2
4 files changed, 14 insertions, 7 deletions
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
index 596d498875a..8057a9e48ad 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
@@ -726,7 +726,7 @@ void SettingsDialog::done(int val)
QSettings *settings = ICore::settings();
settings->setValue(QLatin1String(pageKeyC), m_currentPage.toSetting());
- ICore::saveSettings(); // save all settings
+ ICore::saveSettings(ICore::SettingsDialogDone); // save all settings
// exit event loops in reverse order of addition
for (QEventLoop *eventLoop : m_eventLoops)
diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp
index 4a6066df0eb..63eba664ccd 100644
--- a/src/plugins/coreplugin/icore.cpp
+++ b/src/plugins/coreplugin/icore.cpp
@@ -330,7 +330,7 @@ ICore::ICore(MainWindow *mainwindow)
m_mainwindow = mainwindow;
// Save settings once after all plugins are initialized:
connect(PluginManager::instance(), &PluginManager::initializationDone,
- this, &ICore::saveSettings);
+ this, [] { ICore::saveSettings(ICore::InitializationDone); });
connect(PluginManager::instance(), &PluginManager::testsFinished, [this] (int failedTests) {
emit coreAboutToClose();
if (failedTests != 0)
@@ -690,9 +690,9 @@ void ICore::setupScreenShooter(const QString &name, QWidget *w, const QRect &rc)
new ScreenShooter(w, name, rc);
}
-void ICore::saveSettings()
+void ICore::saveSettings(SaveSettingsReason reason)
{
- emit m_instance->saveSettingsRequested();
+ emit m_instance->saveSettingsRequested(reason);
m_mainwindow->saveSettings();
ICore::settings(QSettings::SystemScope)->sync();
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h
index 5125345cffd..04d501e1346 100644
--- a/src/plugins/coreplugin/icore.h
+++ b/src/plugins/coreplugin/icore.h
@@ -141,14 +141,21 @@ public:
static QString systemInformation();
static void setupScreenShooter(const QString &name, QWidget *w, const QRect &rc = QRect());
+ enum SaveSettingsReason {
+ InitializationDone,
+ SettingsDialogDone,
+ ModeChanged,
+ MainWindowClosing,
+ };
+
public slots:
- static void saveSettings();
+ static void saveSettings(SaveSettingsReason reason);
signals:
void coreAboutToOpen();
void coreOpened();
void newItemDialogStateChanged();
- void saveSettingsRequested();
+ void saveSettingsRequested(SaveSettingsReason reason);
void coreAboutToClose();
void contextAboutToChange(const QList<Core::IContext *> &context);
void contextChanged(const Core::Context &context);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index d35477f6b57..dd724d9f9c7 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -322,7 +322,7 @@ void MainWindow::closeEvent(QCloseEvent *event)
return;
}
- ICore::saveSettings();
+ ICore::saveSettings(ICore::MainWindowClosing);
// Save opened files
if (!DocumentManager::saveAllModifiedDocuments()) {