diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp index 833620ef977..8fda3634e8a 100644 --- a/src/plugins/texteditor/behaviorsettingspage.cpp +++ b/src/plugins/texteditor/behaviorsettingspage.cpp @@ -195,7 +195,7 @@ void BehaviorSettingsPage::apply() if (s) { s->setValue(QLatin1String(Core::Constants::SETTINGS_DEFAULTTEXTENCODING), - d->m_page->behaviorWidget->assignedCodec()->name()); + d->m_page->behaviorWidget->assignedCodecName()); } } 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 +#include + #include #include #include @@ -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) diff --git a/src/plugins/texteditor/behaviorsettingswidget.h b/src/plugins/texteditor/behaviorsettingswidget.h index 9bdfec5bc18..4cbb7709f34 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.h +++ b/src/plugins/texteditor/behaviorsettingswidget.h @@ -55,7 +55,7 @@ public: void setActive(bool active); void setAssignedCodec(QTextCodec *codec); - QTextCodec *assignedCodec() const; + QByteArray assignedCodecName() const; void setCodeStyle(ICodeStylePreferences *preferences);