diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp index 89ae41fb4be..37907a345e5 100644 --- a/src/plugins/texteditor/fontsettings.cpp +++ b/src/plugins/texteditor/fontsettings.cpp @@ -37,10 +37,13 @@ static const char *fontFamilyKey = "FontFamily"; static const char *fontSizeKey = "FontSize"; +static const char *antialiasKey = "FontAntialias"; static const char *trueString = "true"; static const char *falseString = "false"; namespace { +static const bool DEFAULT_ANTIALIAS = true; + #ifdef Q_WS_MAC enum { DEFAULT_FONT_SIZE = 12 }; static const char *DEFAULT_FONT_FAMILY = "Monaco"; @@ -135,7 +138,8 @@ bool Format::equals(const Format &f) const // -- FontSettings FontSettings::FontSettings(const FormatDescriptions &fd) : m_family(defaultFixedFontFamily()), - m_fontSize(DEFAULT_FONT_SIZE) + m_fontSize(DEFAULT_FONT_SIZE), + m_antialias(DEFAULT_ANTIALIAS) { Q_UNUSED(fd); } @@ -144,6 +148,7 @@ void FontSettings::clear() { m_family = defaultFixedFontFamily(); m_fontSize = DEFAULT_FONT_SIZE; + m_antialias = DEFAULT_ANTIALIAS; qFill(m_formats.begin(), m_formats.end(), Format()); } @@ -160,6 +165,9 @@ void FontSettings::toSettings(const QString &category, if (m_fontSize != DEFAULT_FONT_SIZE || s->contains(QLatin1String(fontSizeKey))) s->setValue(QLatin1String(fontSizeKey), m_fontSize); + if (m_antialias != DEFAULT_ANTIALIAS || s->contains(QLatin1String(antialiasKey))) + s->setValue(QLatin1String(antialiasKey), m_antialias); + const Format defaultFormat; foreach (const FormatDescription &desc, descriptions) { @@ -184,7 +192,8 @@ bool FontSettings::fromSettings(const QString &category, group += QLatin1Char('/'); m_family = s->value(group + QLatin1String(fontFamilyKey), defaultFixedFontFamily()).toString(); - m_fontSize = s->value(group + QLatin1String(QLatin1String(fontSizeKey)), m_fontSize).toInt(); + m_fontSize = s->value(group + QLatin1String(fontSizeKey), m_fontSize).toInt(); + m_antialias = s->value(group + QLatin1String(antialiasKey), DEFAULT_ANTIALIAS).toBool(); foreach (const FormatDescription &desc, descriptions) { const QString name = desc.name(); @@ -203,6 +212,7 @@ bool FontSettings::equals(const FontSettings &f) const { return m_family == f.m_family && m_fontSize == f.m_fontSize + && m_antialias == f.m_antialias && m_formats == f.m_formats; } @@ -213,6 +223,7 @@ QTextCharFormat FontSettings::toTextCharFormat(const QString &category) const if (category == QLatin1String("Text")) { tf.setFontFamily(m_family); tf.setFontPointSize(m_fontSize); + tf.setFontStyleStrategy(m_antialias ? QFont::PreferAntialias : QFont::NoAntialias); } if (f.foreground().isValid()) @@ -254,6 +265,17 @@ void FontSettings::setFontSize(int size) m_fontSize = size; } +bool FontSettings::antialias() const +{ + return m_antialias; +} + +void FontSettings::setAntialias(bool antialias) +{ + m_antialias = antialias; +} + + Format &FontSettings::formatFor(const QString &category) { return m_formats[category]; diff --git a/src/plugins/texteditor/fontsettings.h b/src/plugins/texteditor/fontsettings.h index 2b10ffac215..71a20fd18e1 100644 --- a/src/plugins/texteditor/fontsettings.h +++ b/src/plugins/texteditor/fontsettings.h @@ -122,6 +122,12 @@ public: int fontSize() const; void setFontSize(int size); + /** + * Returns the configured antialiasing behavior. + */ + bool antialias() const; + void setAntialias(bool antialias); + /** * Returns the format for the given font category. */ @@ -135,6 +141,7 @@ public: private: QString m_family; int m_fontSize; + bool m_antialias; QMap m_formats; }; diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index f7106446561..7f7b5d182cf 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -240,8 +240,11 @@ QWidget *FontSettingsPage::createPage(QWidget *parent) const int idx = families.indexOf(d_ptr->m_value.family()); d_ptr->ui.familyComboBox->setCurrentIndex(idx); + d_ptr->ui.antialias->setChecked(d_ptr->m_value.antialias()); + connect(d_ptr->ui.familyComboBox, SIGNAL(activated(int)), this, SLOT(updatePointSizes())); connect(d_ptr->ui.sizeComboBox, SIGNAL(activated(int)), this, SLOT(updatePreview())); + connect(d_ptr->ui.antialias, SIGNAL(toggled(bool)), this, SLOT(updatePreview())); connect(d_ptr->ui.itemListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemChanged())); connect(d_ptr->ui.foregroundToolButton, SIGNAL(clicked()), @@ -389,6 +392,7 @@ void FontSettingsPage::updatePreview() if (currentFormat.background().isValid()) format.setBackground(QBrush(currentFormat.background())); format.setFontFamily(d_ptr->ui.familyComboBox->currentText()); + format.setFontStyleStrategy(d_ptr->ui.antialias->isChecked() ? QFont::PreferAntialias : QFont::NoAntialias); bool ok; int size = d_ptr->ui.sizeComboBox->currentText().toInt(&ok); if (!ok) { @@ -436,6 +440,7 @@ void FontSettingsPage::delayedChange() void FontSettingsPage::apply() { d_ptr->m_value.setFamily(d_ptr->ui.familyComboBox->currentText()); + d_ptr->m_value.setAntialias(d_ptr->ui.antialias->isChecked()); bool ok = true; const int size = d_ptr->ui.sizeComboBox->currentText().toInt(&ok); diff --git a/src/plugins/texteditor/fontsettingspage.ui b/src/plugins/texteditor/fontsettingspage.ui index a9b391e55bb..543dc5ce3cc 100644 --- a/src/plugins/texteditor/fontsettingspage.ui +++ b/src/plugins/texteditor/fontsettingspage.ui @@ -11,24 +11,12 @@ - - 6 - - - 9 - Font - - 6 - - - 9 - @@ -91,6 +79,13 @@ + + + + Antialias + + + @@ -119,12 +114,6 @@ Color Scheme - - 6 - - - 9 - @@ -137,12 +126,6 @@ - - 0 - - - 6 -