summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-11-11 13:11:00 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-11-18 23:41:02 +0100
commit7102aa6b1596a07365c75cf373dde06ea8e71231 (patch)
tree0623e012ad0e0b22a2d415ce2997d94f135b1f87 /tests/auto/widgets/widgets
parent71faedc5b4c1f95f47fba6d65b8f619602964d6f (diff)
Fix assert in QFontComboBox when setting empty font
Don't crash if the font does not have any families set. Pick-to: 6.2 Task-number: QTBUG-97995 Change-Id: I8dc2f2fc00309b6fff6d4a661ec6d659f30808af Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
index 3b7965402e..a521b96e21 100644
--- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
+++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
@@ -29,6 +29,7 @@
#include <QTest>
#include <QSignalSpy>
+#include <QFontDatabase>
#include <qfontcombobox.h>
@@ -49,6 +50,7 @@ private slots:
void writingSystem_data();
void writingSystem();
void currentFontChanged();
+ void emptyFont();
};
// Subclass that exposes the protected functions.
@@ -277,6 +279,36 @@ void tst_QFontComboBox::currentFontChanged()
qWarning("Not enough fonts installed on test system. Consider adding some");
}
+void tst_QFontComboBox::emptyFont()
+{
+ QFontComboBox fontCB;
+ if (fontCB.count() < 2)
+ QSKIP("Not enough fonts on system to run test.");
+
+ QFont font;
+ font.setFamilies(QStringList());
+
+ // Due to QTBUG-98341, we need to find an index in the family list
+ // which does not match the default index for the empty font, otherwise
+ // the font selection will not be properly updated.
+ {
+ QFontInfo fi(font);
+ QStringList families = QFontDatabase::families();
+ int index = families.indexOf(fi.family());
+ if (index < 0)
+ index = 0;
+ if (index > 0)
+ index--;
+ else
+ index++;
+
+ fontCB.setCurrentIndex(index);
+ }
+
+ fontCB.setCurrentFont(font);
+ QVERIFY(!fontCB.currentFont().families().isEmpty());
+}
+
QTEST_MAIN(tst_QFontComboBox)
#include "tst_qfontcombobox.moc"