forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user