diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 146c8367189a5295c7f1af7d452137fcb8b4b4b3..fa7d79fecff89d4c8073af24fc7f57457dc0afa2 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -2287,10 +2287,12 @@ static const char autoSaveIntervalKey[] = "EditorManager/AutoSaveInterval"; void EditorManager::saveSettings() { SettingsDatabase *settings = ICore::settingsDatabase(); + settings->beginTransaction(); settings->setValue(QLatin1String(documentStatesKey), d->m_editorStates); settings->setValue(QLatin1String(reloadBehaviorKey), d->m_reloadSetting); settings->setValue(QLatin1String(autoSaveEnabledKey), d->m_autoSaveEnabled); settings->setValue(QLatin1String(autoSaveIntervalKey), d->m_autoSaveInterval); + settings->endTransaction(); } void EditorManager::readSettings() diff --git a/src/plugins/coreplugin/locator/locator.cpp b/src/plugins/coreplugin/locator/locator.cpp index 4b644e949422cef8095f09d99361e8fef1a7dc90..7e2a423f1ca066dd27ce2fad965081b0015a0e02 100644 --- a/src/plugins/coreplugin/locator/locator.cpp +++ b/src/plugins/coreplugin/locator/locator.cpp @@ -186,6 +186,7 @@ void Locator::saveSettings() { if (m_settingsInitialized) { SettingsDatabase *s = ICore::settingsDatabase(); + s->beginTransaction(); s->beginGroup(QLatin1String("QuickOpen")); s->remove(QString()); s->setValue(QLatin1String("RefreshInterval"), refreshInterval()); @@ -202,6 +203,7 @@ void Locator::saveSettings() } s->endGroup(); s->endGroup(); + s->endTransaction(); } } diff --git a/src/plugins/coreplugin/settingsdatabase.cpp b/src/plugins/coreplugin/settingsdatabase.cpp index 4f68fcbe76ebbeefc1805fa37b5bc0f52d3e81f7..efa10da44c7c91e6ce2e658d29558586078d6d25 100644 --- a/src/plugins/coreplugin/settingsdatabase.cpp +++ b/src/plugins/coreplugin/settingsdatabase.cpp @@ -252,6 +252,20 @@ QStringList SettingsDatabase::childKeys() const return children; } +void SettingsDatabase::beginTransaction() +{ + if (!d->m_db.isOpen()) + return; + d->m_db.exec(QLatin1String("BEGIN TRANSACTION;")); +} + +void SettingsDatabase::endTransaction() +{ + if (!d->m_db.isOpen()) + return; + d->m_db.exec(QLatin1String("END TRANSACTION;")); +} + void SettingsDatabase::sync() { // TODO: Delay writing of dirty keys and save them here diff --git a/src/plugins/coreplugin/settingsdatabase.h b/src/plugins/coreplugin/settingsdatabase.h index 71c81adf65039375483873caa472c431841510c3..dd03d7d8ae2e21bb3d0dbf88f9fb4cafe6bf8c06 100644 --- a/src/plugins/coreplugin/settingsdatabase.h +++ b/src/plugins/coreplugin/settingsdatabase.h @@ -57,6 +57,9 @@ public: QString group() const; QStringList childKeys() const; + void beginTransaction(); + void endTransaction(); + void sync(); private: diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index d52b042d1b935d4fea41dca8de818fd2e03bcfe5..2ae25aef5a66343e9f01baca0e8c613592f36be3 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -150,6 +150,7 @@ void UpdateInfoPlugin::saveSettings() { SettingsDatabase *settings = ICore::settingsDatabase(); if (settings) { + settings->beginTransaction(); settings->beginGroup(QLatin1String("Updater")); settings->setValue(QLatin1String("Application"), d->updaterProgram); settings->setValue(QLatin1String("LastDayChecked"), d->m_lastDayChecked); @@ -157,6 +158,7 @@ void UpdateInfoPlugin::saveSettings() settings->setValue(QLatin1String("CheckOnlyArgument"), d->updaterCheckOnlyArgument); settings->setValue(QLatin1String("ScheduledUpdateTime"), d->m_scheduledUpdateTime); settings->endGroup(); + settings->endTransaction(); } }