diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp index 89ae41fb4bef9650f96dd9dfffdb87388fc3474e..37907a345e5c4625d5e31af50091f100f172704e 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 2b10ffac21554481e17520a3cea5d654310af251..71a20fd18e168e89e14f7ffea9d9ffb6925308e7 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<QString, Format> m_formats; }; diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index f710644656160a478e9e39bc5964bf03678383f8..7f7b5d182cf78d4e6a72b701cb5fa85efa552de6 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 a9b391e55bb21e8892be9e615ea803dd1d4982f3..543dc5ce3cc6bb9889e10e10085d353cd3294af5 100644 --- a/src/plugins/texteditor/fontsettingspage.ui +++ b/src/plugins/texteditor/fontsettingspage.ui @@ -11,24 +11,12 @@ </rect> </property> <layout class="QVBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>9</number> - </property> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>Font</string> </property> <layout class="QHBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>9</number> - </property> <item> <widget class="QLabel" name="label_5"> <property name="sizePolicy"> @@ -91,6 +79,13 @@ </property> </widget> </item> + <item> + <widget class="QCheckBox" name="antialias"> + <property name="text"> + <string>Antialias</string> + </property> + </widget> + </item> <item> <spacer> <property name="orientation"> @@ -119,12 +114,6 @@ <string>Color Scheme</string> </property> <layout class="QHBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>9</number> - </property> <item> <widget class="QListWidget" name="itemListWidget"> <property name="sizePolicy"> @@ -137,12 +126,6 @@ </item> <item> <layout class="QGridLayout"> - <property name="margin"> - <number>0</number> - </property> - <property name="spacing"> - <number>6</number> - </property> <item row="2" column="0"> <widget class="QCheckBox" name="boldCheckBox"> <property name="text">