diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-10 17:29:29 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-11 12:13:01 +0000 |
commit | b6cb8ca2db847912fe70b66217d07ac6d1577811 (patch) | |
tree | 6c4b7b39eb77e5ba481e1e9f82fd5f771b1244c9 | |
parent | 96d5ffe51e8196ea60aab62a480f036daae67a63 (diff) |
Fix popup fonts
This is a partial revert of a405919. This change makes popups inherit
the window font instead of the parent item font.
Change-Id: Ie360e3831aadbd167859e17d381edf3a28945300
Task-number: QTBUG-50984
Task-number: QTBUG-51696
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 2 | ||||
-rw-r--r-- | src/templates/qquickcontrol.cpp | 16 | ||||
-rw-r--r-- | src/templates/qquickpopup.cpp | 4 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_combobox.qml | 20 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 92 |
5 files changed, 68 insertions, 66 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index 309c8d3a..e702c785 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -420,7 +420,7 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f) const bool changed = font != f; font = f; - QQuickControlPrivate::updateFontRecur(q->contentItem(), f); + QQuickControlPrivate::updateFontRecur(q->QQuickWindow::contentItem(), f); if (changed) emit q->fontChanged(); diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp index f33a6fb2..2f1eb18f 100644 --- a/src/templates/qquickcontrol.cpp +++ b/src/templates/qquickcontrol.cpp @@ -230,12 +230,7 @@ QFont QQuickControlPrivate::naturalControlFont(const QQuickItem *q) QQuickItem *p = q->parentItem(); bool found = false; while (p) { - if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(p)) { - if (const QQuickPopup *qp = qobject_cast<const QQuickPopup *>(qpi->parent())) { - p = qp->parentItem(); - continue; - } - } else if (QQuickControl *qc = qobject_cast<QQuickControl *>(p)) { + if (QQuickControl *qc = qobject_cast<QQuickControl *>(p)) { naturalFont = qc->font(); found = true; break; @@ -310,13 +305,6 @@ void QQuickControlPrivate::updateFontRecur(QQuickItem *item, const QFont &f) else QQuickControlPrivate::updateFontRecur(child, f); } - - foreach (QObject *child, item->children()) { - if (QQuickPopup *qp = qobject_cast<QQuickPopup *>(child)) { - if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(qp->popupItem())) - QQuickControlPrivate::updateFontRecur(qpi, f); - } - } } QString QQuickControl::accessibleName() const @@ -377,7 +365,7 @@ void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem:: { Q_D(QQuickControl); QQuickItem::itemChange(change, value); - if (change == ItemParentHasChanged && isComponentComplete()) { + if (change == ItemParentHasChanged && value.item) { d->resolveFont(); if (!d->hasLocale) d->locale = QQuickControlPrivate::calcLocale(d->parentItem); diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp index 4fbcb069..90c17e58 100644 --- a/src/templates/qquickpopup.cpp +++ b/src/templates/qquickpopup.cpp @@ -1177,10 +1177,8 @@ void QQuickPopup::setParentItem(QQuickItem *parent) d->parentItem = parent; if (d->positioner.parentItem()) d->positioner.setParentItem(parent); - if (parent) { - QQuickControlPrivate::updateFontRecur(d->popupItem, QQuickControlPrivate::naturalControlFont(parent)); + if (parent) QQuickControlPrivate::updateLocaleRecur(d->popupItem, QQuickControlPrivate::calcLocale(parent)); - } emit parentChanged(); } } diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml index b451df7c..759a1ebc 100644 --- a/tests/auto/controls/data/tst_combobox.qml +++ b/tests/auto/controls/data/tst_combobox.qml @@ -53,6 +53,7 @@ TestCase { visible: true width: 400 height: 400 + font.pixelSize: 25 } SignalSpy { @@ -670,9 +671,7 @@ TestCase { return index } - function test_font() { // QTBUG_50984 - skip("Temporarily skipped due to QTBUG-51696") - + function test_font() { // QTBUG_50984, QTBUG-51696 var control = component.createObject(window.contentItem) verify(control) verify(control.button) @@ -698,24 +697,27 @@ TestCase { waitForRendering(listview) var idx1 = getChild(listview.contentItem, "delegate", -1) - compare(listview.contentItem.children[idx1].font.pixelSize, 30) + compare(listview.contentItem.children[idx1].font.pixelSize, 25) var idx2 = getChild(listview.contentItem, "delegate", idx1) - compare(listview.contentItem.children[idx2].font.pixelSize, 30) + compare(listview.contentItem.children[idx2].font.pixelSize, 25) + + compare(listview.contentItem.children[idx1].font.pixelSize, 25) + compare(listview.contentItem.children[idx2].font.pixelSize, 25) control.font.pixelSize = control.font.pixelSize + 10 compare(control.combobox.font.pixelSize, 40) waitForRendering(listview) - compare(listview.contentItem.children[idx1].font.pixelSize, 40) - compare(listview.contentItem.children[idx2].font.pixelSize, 40) + compare(listview.contentItem.children[idx1].font.pixelSize, 25) + compare(listview.contentItem.children[idx2].font.pixelSize, 25) control.combobox.font.pixelSize = control.combobox.font.pixelSize + 5 compare(control.combobox.font.pixelSize, 45) waitForRendering(listview) idx1 = getChild(listview.contentItem, "delegate", -1) - compare(listview.contentItem.children[idx1].font.pixelSize, 45) + compare(listview.contentItem.children[idx1].font.pixelSize, 25) idx2 = getChild(listview.contentItem, "delegate", idx1) - compare(listview.contentItem.children[idx2].font.pixelSize, 45) + compare(listview.contentItem.children[idx2].font.pixelSize, 25) control.destroy() } diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml index 7a34834e..3d54574a 100644 --- a/tests/auto/controls/data/tst_popup.qml +++ b/tests/auto/controls/data/tst_popup.qml @@ -342,33 +342,40 @@ TestCase { Component { id: component - Pane { - id: panel - property alias button: _button; - property alias popup: _popup; - property alias listview: _listview - font.pixelSize: 30 - Column { - Button { - id: _button - text: "Button" - font.pixelSize: 20 - - Popup { - id: _popup - y: button.height - implicitHeight: Math.min(396, _listview.contentHeight) - contentItem: ListView { - id: _listview - height: _button.height * 20 - model: 2 - delegate: Button { - objectName: "delegate" - width: _button.width - height: _button.height - text: "N: " + index - checkable: true - autoExclusive: true + ApplicationWindow { + width: 400 + height: 400 + visible: true + font.pixelSize: 40 + property alias pane: _pane + Pane { + id: _pane + property alias button: _button; + property alias popup: _popup; + property alias listview: _listview + font.pixelSize: 30 + Column { + Button { + id: _button + text: "Button" + font.pixelSize: 20 + + Popup { + id: _popup + y: _button.height + implicitHeight: Math.min(396, _listview.contentHeight) + contentItem: ListView { + id: _listview + height: _button.height * 20 + model: 2 + delegate: Button { + objectName: "delegate" + width: _button.width + height: _button.height + text: "N: " + index + checkable: true + autoExclusive: true + } } } } @@ -377,18 +384,20 @@ TestCase { } } - function test_font() { // QTBUG_50984 - var control = component.createObject(testCase) - verify(control) - verify(control.button) - verify(control.popup) - verify(control.listview) + function test_font() { // QTBUG_50984, QTBUG-51696 + var window = component.createObject(testCase) + verify(window) + window.requestActivate() + tryCompare(window, "active", true) + + var control = window.pane waitForRendering(control) control.forceActiveFocus() verify(control.activeFocus) + compare(window.font.pixelSize, 40) compare(control.font.pixelSize, 30) compare(control.button.font.pixelSize, 20) @@ -402,17 +411,22 @@ TestCase { waitForRendering(listview) var idx1 = getChild(listview.contentItem, "delegate", -1) - compare(listview.contentItem.children[idx1].font.pixelSize, 20) + compare(listview.contentItem.children[idx1].font.pixelSize, 40) var idx2 = getChild(listview.contentItem, "delegate", idx1) - compare(listview.contentItem.children[idx2].font.pixelSize, 20) + compare(listview.contentItem.children[idx2].font.pixelSize, 40) - control.button.font.pixelSize = control.button.font.pixelSize + 10 + control.button.font.pixelSize = 30 compare(control.button.font.pixelSize, 30) waitForRendering(listview) - compare(listview.contentItem.children[idx1].font.pixelSize, 30) - compare(listview.contentItem.children[idx2].font.pixelSize, 30) + compare(listview.contentItem.children[idx1].font.pixelSize, 40) + compare(listview.contentItem.children[idx2].font.pixelSize, 40) - control.destroy() + window.font.pixelSize = 50 + waitForRendering(listview) + compare(listview.contentItem.children[idx1].font.pixelSize, 50) + compare(listview.contentItem.children[idx2].font.pixelSize, 50) + + window.destroy() } Component { |