diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 2374db934de..8366c179f1a 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1234,11 +1234,6 @@ void EditorManagerPrivate::saveSettings() qsettings->setValueWithDefault(maxRecentFilesKey, d->m_settings.maxRecentFiles, def.maxRecentFiles); - - qsettings->setValueWithDefault(fileSystemCaseSensitivityKey, - int(HostOsInfo::fileNameCaseSensitivity()), - int(OsSpecificAspects::fileNameCaseSensitivity( - HostOsInfo::hostOs()))); qsettings->setValueWithDefault(preferredEditorFactoriesKey, toMap(userPreferredEditorFactories())); } @@ -1256,26 +1251,14 @@ void EditorManagerPrivate::readSettings() if (maxRecentFiles > 0) d->m_settings.maxRecentFiles = maxRecentFiles; - if (qs->contains(fileSystemCaseSensitivityKey)) { - Qt::CaseSensitivity defaultSensitivity - = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); - bool ok = false; - Qt::CaseSensitivity sensitivity = defaultSensitivity; - int sensitivitySetting = qs->value(fileSystemCaseSensitivityKey).toInt(&ok); - if (ok) { - switch (Qt::CaseSensitivity(sensitivitySetting)) { - case Qt::CaseSensitive: - sensitivity = Qt::CaseSensitive; - break; - case Qt::CaseInsensitive: - sensitivity = Qt::CaseInsensitive; - } - } - if (sensitivity == defaultSensitivity) - HostOsInfo::unsetOverrideFileNameCaseSensitivity(); - else - HostOsInfo::setOverrideFileNameCaseSensitivity(sensitivity); - } + const Qt::CaseSensitivity defaultSensitivity = OsSpecificAspects::fileNameCaseSensitivity( + HostOsInfo::hostOs()); + const Qt::CaseSensitivity sensitivity = readFileSystemSensitivity(qs); + if (sensitivity == defaultSensitivity) + HostOsInfo::unsetOverrideFileNameCaseSensitivity(); + else + HostOsInfo::setOverrideFileNameCaseSensitivity(sensitivity); + const QHash preferredEditorFactories = fromMap( qs->value(preferredEditorFactoriesKey).toMap()); setUserPreferredEditorFactories(preferredEditorFactories); @@ -1302,6 +1285,34 @@ void EditorManagerPrivate::readSettings() updateAutoSave(); } +Qt::CaseSensitivity EditorManagerPrivate::readFileSystemSensitivity(QSettings *settings) +{ + const Qt::CaseSensitivity defaultSensitivity = OsSpecificAspects::fileNameCaseSensitivity( + HostOsInfo::hostOs()); + if (!settings->contains(fileSystemCaseSensitivityKey)) + return defaultSensitivity; + bool ok = false; + const int sensitivitySetting = settings->value(fileSystemCaseSensitivityKey).toInt(&ok); + if (ok) { + switch (Qt::CaseSensitivity(sensitivitySetting)) { + case Qt::CaseSensitive: + return Qt::CaseSensitive; + case Qt::CaseInsensitive: + return Qt::CaseInsensitive; + } + } + return defaultSensitivity; +} + +void EditorManagerPrivate::writeFileSystemSensitivity(Utils::QtcSettings *settings, + Qt::CaseSensitivity sensitivity) +{ + settings->setValueWithDefault(fileSystemCaseSensitivityKey, + int(sensitivity), + int(OsSpecificAspects::fileNameCaseSensitivity( + HostOsInfo::hostOs()))); +} + void EditorManagerPrivate::setAutoSaveEnabled(bool enabled) { d->m_settings.autoSaveEnabled = enabled; diff --git a/src/plugins/coreplugin/editormanager/editormanager_p.h b/src/plugins/coreplugin/editormanager/editormanager_p.h index a8cc29f2040..e42a61abb36 100644 --- a/src/plugins/coreplugin/editormanager/editormanager_p.h +++ b/src/plugins/coreplugin/editormanager/editormanager_p.h @@ -43,9 +43,14 @@ QT_BEGIN_NAMESPACE class QAction; +class QSettings; class QTimer; QT_END_NAMESPACE +namespace Utils { +class QtcSettings; +} + namespace Core { class EditorManager; @@ -112,6 +117,9 @@ public: static void saveSettings(); static void readSettings(); + static Qt::CaseSensitivity readFileSystemSensitivity(QSettings *settings); + static void writeFileSystemSensitivity(Utils::QtcSettings *settings, + Qt::CaseSensitivity sensitivity); static void setAutoSaveEnabled(bool enabled); static bool autoSaveEnabled(); static void setAutoSaveInterval(int interval); diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp index 844e1cc6955..d872db4e3f5 100644 --- a/src/plugins/coreplugin/systemsettings.cpp +++ b/src/plugins/coreplugin/systemsettings.cpp @@ -210,7 +210,9 @@ public: m_ui.fileSystemCaseSensitivityChooser->addItem(tr("Case Insensitive"), Qt::CaseInsensitive); } - if (HostOsInfo::fileNameCaseSensitivity() == Qt::CaseSensitive) + const Qt::CaseSensitivity sensitivity = EditorManagerPrivate::readFileSystemSensitivity( + ICore::settings()); + if (sensitivity == Qt::CaseSensitive) m_ui.fileSystemCaseSensitivityChooser->setCurrentIndex(0); else m_ui.fileSystemCaseSensitivityChooser->setCurrentIndex(1); @@ -258,15 +260,15 @@ private: void SystemSettingsWidget::apply() { + QtcSettings *settings = ICore::settings(); EditorManager::setReloadSetting(IDocument::ReloadSetting(m_ui.reloadBehavior->currentIndex())); if (HostOsInfo::isAnyUnixHost()) { - ConsoleProcess::setTerminalEmulator(ICore::settings(), + ConsoleProcess::setTerminalEmulator(settings, {m_ui.terminalComboBox->lineEdit()->text(), m_ui.terminalOpenArgs->text(), m_ui.terminalExecuteArgs->text()}); if (!HostOsInfo::isMacHost()) { - UnixUtils::setFileBrowser(ICore::settings(), - m_ui.externalFileBrowserEdit->text()); + UnixUtils::setFileBrowser(settings, m_ui.externalFileBrowserEdit->text()); } } PatchTool::setPatchCommand(m_ui.patchChooser->filePath()); @@ -289,14 +291,17 @@ void SystemSettingsWidget::apply() m_ui.askBeforeExitCheckBox->isChecked()); if (HostOsInfo::isMacHost()) { - Qt::CaseSensitivity defaultSensitivity - = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); - Qt::CaseSensitivity selectedSensitivity = Qt::CaseSensitivity( - m_ui.fileSystemCaseSensitivityChooser->currentData().toInt()); - if (defaultSensitivity == selectedSensitivity) - HostOsInfo::unsetOverrideFileNameCaseSensitivity(); - else - HostOsInfo::setOverrideFileNameCaseSensitivity(selectedSensitivity); + const Qt::CaseSensitivity sensitivity = EditorManagerPrivate::readFileSystemSensitivity( + settings); + const Qt::CaseSensitivity selectedSensitivity = Qt::CaseSensitivity( + m_ui.fileSystemCaseSensitivityChooser->currentData().toInt()); + if (selectedSensitivity != sensitivity) { + EditorManagerPrivate::writeFileSystemSensitivity(settings, selectedSensitivity); + RestartDialog dialog( + ICore::dialogParent(), + tr("The file system case sensitivity change will take effect after restart.")); + dialog.exec(); + } } CorePlugin::setEnvironmentChanges(m_environmentChanges);