summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Bastian <thierry.bastian@nokia.com>2009-06-18 13:16:17 (GMT)
committerThierry Bastian <thierry.bastian@nokia.com>2009-06-18 13:17:42 (GMT)
commit45c1b4f3d48dd8f7c33b259b6f73cf628798a23d (patch)
tree609993320ba8c0bd6ef6f3f9bac4ff1d96789a04
parent450a9c97aba21db04df4af281312e4262529691a (diff)
downloadQt-45c1b4f3d48dd8f7c33b259b6f73cf628798a23d.zip
Qt-45c1b4f3d48dd8f7c33b259b6f73cf628798a23d.tar.gz
Qt-45c1b4f3d48dd8f7c33b259b6f73cf628798a23d.tar.bz2
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
-rw-r--r--src/gui/dialogs/qfontdialog.cpp11
-rw-r--r--tests/auto/qfontdialog/tst_qfontdialog.cpp26
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<int> 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 <qfontinfo.h>
#include <qtimer.h>
#include <qmainwindow.h>
+#include <qlistview.h>
#include "qfontdialog.h"
+#include <private/qfontdialog_p.h>
//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<QListView*>(dialog.d_func()->familyList);
+ QListView *styleList = reinterpret_cast<QListView*>(dialog.d_func()->styleList);
+ QListView *sizeList = reinterpret_cast<QListView*>(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"