From 45c1b4f3d48dd8f7c33b259b6f73cf628798a23d Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 18 Jun 2009 15:16:17 +0200 Subject: QFontDialog: fixed the current font not being updated This could happen when the list of styles depending on the font is different from the font you selected before. It then is not updated and the style of the font returned by the QFontDialog is wrong. Task-number: 256466 --- src/gui/dialogs/qfontdialog.cpp | 11 ----------- tests/auto/qfontdialog/tst_qfontdialog.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index 582ba9b..e258cb5 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -501,8 +501,6 @@ void QFontDialogPrivate::updateFamilies() { Q_Q(QFontDialog); - familyList->blockSignals(true); - enum match_t { MATCH_NONE = 0, MATCH_LAST_RESORT = 1, MATCH_APP = 2, MATCH_FAMILY = 3 }; QStringList familyNames = fdb.families(writingSystem); @@ -556,7 +554,6 @@ void QFontDialogPrivate::updateFamilies() && familyList->hasFocus()) familyEdit->selectAll(); - familyList->blockSignals(false); updateStyles(); } @@ -567,9 +564,6 @@ void QFontDialogPrivate::updateFamilies() void QFontDialogPrivate::updateStyles() { Q_Q(QFontDialog); - - styleList->blockSignals(true); - QStringList styles = fdb.styles(familyList->currentText()); styleList->model()->setStringList(styles); @@ -613,8 +607,6 @@ void QFontDialogPrivate::updateStyles() smoothScalable = fdb.isSmoothlyScalable(familyList->currentText(), styleList->currentText()); } - styleList->blockSignals(false); - updateSizes(); } @@ -628,8 +620,6 @@ void QFontDialogPrivate::updateSizes() { Q_Q(QFontDialog); - sizeList->blockSignals(true); - if (!familyList->currentText().isEmpty()) { QList sizes = fdb.pointSizes(familyList->currentText(), styleList->currentText()); @@ -659,7 +649,6 @@ void QFontDialogPrivate::updateSizes() sizeEdit->clear(); } - sizeList->blockSignals(false); _q_updateSample(); } diff --git a/tests/auto/qfontdialog/tst_qfontdialog.cpp b/tests/auto/qfontdialog/tst_qfontdialog.cpp index c12c229..1444ee0 100644 --- a/tests/auto/qfontdialog/tst_qfontdialog.cpp +++ b/tests/auto/qfontdialog/tst_qfontdialog.cpp @@ -47,7 +47,9 @@ #include #include #include +#include #include "qfontdialog.h" +#include //TESTED_CLASS= //TESTED_FILES= @@ -74,6 +76,7 @@ public slots: private slots: void defaultOkButton(); void setFont(); + void task256466_wrongStyle(); }; tst_QFontDialog::tst_QFontDialog() @@ -151,6 +154,29 @@ void tst_QFontDialog::setFont() } +class FriendlyFontDialog : public QFontDialog +{ + friend tst_QFontDialog; + Q_DECLARE_PRIVATE(QFontDialog); +}; + +void tst_QFontDialog::task256466_wrongStyle() +{ + QFontDatabase fdb; + FriendlyFontDialog dialog; + QListView *familyList = reinterpret_cast(dialog.d_func()->familyList); + QListView *styleList = reinterpret_cast(dialog.d_func()->styleList); + QListView *sizeList = reinterpret_cast(dialog.d_func()->sizeList); + for (int i = 0; i < familyList->model()->rowCount(); ++i) { + QModelIndex currentFamily = familyList->model()->index(i, 0); + familyList->setCurrentIndex(currentFamily); + QCOMPARE(dialog.currentFont(), fdb.font(currentFamily.data().toString(), + styleList->currentIndex().data().toString(), sizeList->currentIndex().data().toInt())); + } +} + + + QTEST_MAIN(tst_QFontDialog) #include "tst_qfontdialog.moc" -- cgit v0.12