aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-10 17:29:29 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-11 12:13:01 +0000
commitb6cb8ca2db847912fe70b66217d07ac6d1577811 (patch)
tree6c4b7b39eb77e5ba481e1e9f82fd5f771b1244c9
parent96d5ffe51e8196ea60aab62a480f036daae67a63 (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.cpp2
-rw-r--r--src/templates/qquickcontrol.cpp16
-rw-r--r--src/templates/qquickpopup.cpp4
-rw-r--r--tests/auto/controls/data/tst_combobox.qml20
-rw-r--r--tests/auto/controls/data/tst_popup.qml92
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 {