Request restart after changing file system case sensitivity

And don't apply the changed setting until restart by just writing the
new value to the settings directly, which is then read at the next
startup.
Avoids issues where file paths are cached or used as key in a hash.

Fixes: QTCREATORBUG-25005
Change-Id: I30e4d75455124af67ba9ee1d9e8ed31924016d0d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Eike Ziller
2021-12-10 09:05:17 +01:00
parent 85b1d166eb
commit f03f712791
3 changed files with 61 additions and 37 deletions

View File

@@ -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);