diff options
author | Andy Shaw <andy.shaw@qt.io> | 2020-10-19 11:39:24 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2020-11-20 14:30:22 +0100 |
commit | d8602ce58b6ef268be84b9aa0166b0c3fa6a96e8 (patch) | |
tree | 3665176e38aac64015213085f3d0e867ec11e612 /src/widgets/widgets | |
parent | 13c460d0ff1a4eecfb7b1bc43a863783ed59a2bd (diff) |
QFont: Prefer setFamilies() over setFamily()
By depending on setFamilies() then we can be sure that font names with
spaces, commas, quotes and so on are correctly handled without being
misinterpreted. For now it will split on the comma when a string
containing one is passed to setFamily. But from Qt 6.2 this will be
removed to preserve the family string as a convenience function.
[ChangeLog][QtGui][QFont] Indicated that setFamilies/families is
preferred over setFamily/family to ensure that font family names are
preserved when spaces, commas and so on are used in the name.
Change-Id: Id3c1a4e827756a4c928fed461a4aafa5a0f06633
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qfontcombobox.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index bd96aa2768..60a1f06764 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -134,8 +134,8 @@ static QFontDatabase::WritingSystem writingSystemFromLocale() static QFontDatabase::WritingSystem writingSystemForFont(const QFont &font, bool *hasLatin) { - QList<QFontDatabase::WritingSystem> writingSystems = QFontDatabase::writingSystems(font.family()); -// qDebug() << font.family() << writingSystems; + QList<QFontDatabase::WritingSystem> writingSystems = QFontDatabase::writingSystems(font.families().first()); +// qDebug() << font.families().first() << writingSystems; // this just confuses the algorithm below. Vietnamese is Latin with lots of special chars writingSystems.removeOne(QFontDatabase::Vietnamese); @@ -213,7 +213,7 @@ void QFontFamilyDelegate::paint(QPainter *painter, QFont font(option.font); font.setPointSize(QFontInfo(font).pointSize() * 3 / 2); QFont font2 = font; - font2.setFamily(text); + font2.setFamilies(QStringList{text}); bool hasLatin; QFontDatabase::WritingSystem system = writingSystemForFont(font2, &hasLatin); @@ -286,7 +286,7 @@ QSize QFontFamilyDelegate::sizeHint(const QStyleOptionViewItem &option, { QString text = index.data(Qt::DisplayRole).toString(); QFont font(option.font); -// font.setFamily(text); +// font.setFamilies(QStringList{text}); font.setPointSize(QFontInfo(font).pointSize() * 3/2); QFontMetrics fontMetrics(font); return QSize(fontMetrics.horizontalAdvance(text), fontMetrics.height()); @@ -367,8 +367,8 @@ void QFontComboBoxPrivate::_q_updateModel() void QFontComboBoxPrivate::_q_currentChanged(const QString &text) { Q_Q(QFontComboBox); - if (currentFont.family() != text) { - currentFont.setFamily(text); + if (currentFont.families().first() != text) { + currentFont.setFamilies(QStringList{text}); emit q->currentFontChanged(currentFont); } } |