From 3cd94fcaf81ca5285c481c59b6ed4a720241820e Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 7 Mar 2013 12:53:54 +0200 Subject: QFontComboBox: Minor code optimization & simplification Change-Id: If536a0b8721bdc562b505fc94a9fe4f77cc619de Reviewed-by: Lars Knoll --- src/widgets/widgets/qfontcombobox.cpp | 37 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 25 deletions(-) (limited to 'src/widgets/widgets/qfontcombobox.cpp') diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index 1b9a08b0d2..4adb188212 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -56,46 +56,33 @@ QT_BEGIN_NAMESPACE static QFontDatabase::WritingSystem writingSystemForFont(const QFont &font, bool *hasLatin) { - *hasLatin = true; - QList writingSystems = QFontDatabase().writingSystems(font.family()); // qDebug() << font.family() << writingSystems; // this just confuses the algorithm below. Vietnamese is Latin with lots of special chars - writingSystems.removeAll(QFontDatabase::Vietnamese); + writingSystems.removeOne(QFontDatabase::Vietnamese); + *hasLatin = writingSystems.removeOne(QFontDatabase::Latin); + + if (writingSystems.isEmpty()) + return QFontDatabase::Any; - QFontDatabase::WritingSystem system = QFontDatabase::Any; + QFontDatabase::WritingSystem system = writingSystems.last(); - if (!writingSystems.contains(QFontDatabase::Latin)) { - *hasLatin = false; + if (!*hasLatin) { // we need to show something - if (writingSystems.count()) - system = writingSystems.last(); - } else { - writingSystems.removeAll(QFontDatabase::Latin); + return system; } - if (writingSystems.isEmpty()) + if (writingSystems.count() == 1 && system > QFontDatabase::Cyrillic) return system; - if (writingSystems.count() == 1 && writingSystems.at(0) > QFontDatabase::Cyrillic) { - system = writingSystems.at(0); + if (writingSystems.count() <= 2 && system > QFontDatabase::Armenian && system < QFontDatabase::Vietnamese) return system; - } - if (writingSystems.count() <= 2 - && writingSystems.last() > QFontDatabase::Armenian - && writingSystems.last() < QFontDatabase::Vietnamese) { - system = writingSystems.last(); + if (writingSystems.count() <= 5 && system >= QFontDatabase::SimplifiedChinese && system <= QFontDatabase::Korean) return system; - } - if (writingSystems.count() <= 5 - && writingSystems.last() >= QFontDatabase::SimplifiedChinese - && writingSystems.last() <= QFontDatabase::Korean) - system = writingSystems.last(); - - return system; + return QFontDatabase::Any; } class QFontFamilyDelegate : public QAbstractItemDelegate -- cgit v1.2.3