diff options
author | Konstantin Shegunov <kshegunov@gmail.com> | 2016-07-29 09:24:58 +0300 |
---|---|---|
committer | Konstantin Shegunov <kshegunov@gmail.com> | 2016-08-03 11:47:58 +0000 |
commit | 5dd907bf639f43be7f2cdfdd44ec3795f1b31bf6 (patch) | |
tree | ec880e94319486587fc78e529f02afb3d4f45e2d /tests/auto/gui | |
parent | 5a133a404ebaa5233d5370ace10ba9532b9c6adc (diff) |
Save QFont's style name if present
Font style names are quite irregular and the simplistic matching
implemented in QFontDatabase::styleString(const QFont &) is unable to
properly resolve the style name when font is recreated from a string.
This causes the fonts before and after serialization to be considered
different, even though they are not. The from/toString methods were
made to write and respect the exact font style.
[ChangeLog][QtGui][Important Behavior Changes] QFont::toString() and
QFont::key() were modified to save the font's style name if one is
set, invalidating any stored font identifiers. QFont::fromString()
was also adjusted to accommodate the change.
Task-number: QTBUG-54936
Change-Id: Ibc7c54119acdd8f0950d6049cc89f859bf981504
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'tests/auto/gui')
-rw-r--r-- | tests/auto/gui/text/qfont/tst_qfont.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qfont/tst_qfont.cpp b/tests/auto/gui/text/qfont/tst_qfont.cpp index 894b197968..ca984a26a5 100644 --- a/tests/auto/gui/text/qfont/tst_qfont.cpp +++ b/tests/auto/gui/text/qfont/tst_qfont.cpp @@ -62,6 +62,7 @@ private slots: void styleName(); void defaultFamily_data(); void defaultFamily(); + void toAndFromString(); void sharing(); }; @@ -539,6 +540,26 @@ void tst_QFont::defaultFamily() QVERIFY2(isAcceptable, msgNotAcceptableFont(familyForHint, acceptableFamilies)); } +void tst_QFont::toAndFromString() +{ + QFont defaultFont = QGuiApplication::font(); + QString family = defaultFont.family(); + + QFontDatabase fdb; + const QStringList stylesList = fdb.styles(family); + if (stylesList.size() == 0) + QSKIP("Default font doesn't have any styles"); + + for (const QString &style : stylesList) { + QFont result; + QFont initial = fdb.font(family, style, defaultFont.pointSize()); + + result.fromString(initial.toString()); + + QCOMPARE(result, initial); + } +} + void tst_QFont::sharing() { // QFontCache references the engineData |