aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/behaviorsettingswidget.cpp
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2019-11-04 10:23:09 +0100
committerChristian Stenger <christian.stenger@qt.io>2019-11-06 06:46:55 +0000
commit00e89452bdbdc1c231ceb16fe89728b4aa26e6d7 (patch)
treeb70d14e65cf63d4017c7e637bf26319a242f1e0f /src/plugins/texteditor/behaviorsettingswidget.cpp
parent85f5a8bd78c5a2f5a5f2ef1cc6571fb454812c16 (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.cpp24
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)