diff options
author | Christian Stenger <christian.stenger@qt.io> | 2019-11-04 10:23:09 +0100 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2019-11-06 06:46:55 +0000 |
commit | 00e89452bdbdc1c231ceb16fe89728b4aa26e6d7 (patch) | |
tree | b70d14e65cf63d4017c7e637bf26319a242f1e0f /src/plugins/texteditor/behaviorsettingswidget.cpp | |
parent | 85f5a8bd78c5a2f5a5f2ef1cc6571fb454812c16 (diff) |
TextEditor: Fix dropping explicitly set codec to System
If we set the default encoding to the System-wide encoding
we failed to distinguish them as separate encodings.
Explicitly handle 'System' encoding to avoid dropping
to the 'System' encoding when setting an encoding that
matches this one exactly.
Fixes: QTCREATORBUG-22843
Change-Id: Ib4fa50268ca6f792cdff001b9b07bb18804c4401
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/texteditor/behaviorsettingswidget.cpp')
-rw-r--r-- | src/plugins/texteditor/behaviorsettingswidget.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/plugins/texteditor/behaviorsettingswidget.cpp b/src/plugins/texteditor/behaviorsettingswidget.cpp index e528a23812a..85f9e222810 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.cpp +++ b/src/plugins/texteditor/behaviorsettingswidget.cpp @@ -28,6 +28,9 @@ #include "tabsettingswidget.h" +#include <coreplugin/coreconstants.h> +#include <coreplugin/icore.h> + #include <texteditor/typingsettings.h> #include <texteditor/storagesettings.h> #include <texteditor/behaviorsettings.h> @@ -132,17 +135,30 @@ void BehaviorSettingsWidget::setActive(bool active) void BehaviorSettingsWidget::setAssignedCodec(QTextCodec *codec) { + const QString codecName = Core::ICore::settings()->value( + Core::Constants::SETTINGS_DEFAULTTEXTENCODING).toString(); + + int rememberedSystemPosition = -1; for (int i = 0; i < d->m_codecs.size(); ++i) { if (codec == d->m_codecs.at(i)) { - d->m_ui.encodingBox->setCurrentIndex(i); - break; + if (d->m_ui.encodingBox->itemText(i) == codecName) { + d->m_ui.encodingBox->setCurrentIndex(i); + return; + } else { // we've got System matching encoding - but have explicitly set the codec + rememberedSystemPosition = i; + } } } + if (rememberedSystemPosition != -1) + d->m_ui.encodingBox->setCurrentIndex(rememberedSystemPosition); } -QTextCodec *BehaviorSettingsWidget::assignedCodec() const +QByteArray BehaviorSettingsWidget::assignedCodecName() const { - return d->m_codecs.at(d->m_ui.encodingBox->currentIndex()); + return d->m_ui.encodingBox->currentIndex() == 0 + ? QByteArray("System") // we prepend System to the available codecs + : d->m_codecs.at(d->m_ui.encodingBox->currentIndex())->name(); + } void BehaviorSettingsWidget::setCodeStyle(ICodeStylePreferences *preferences) |