aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-18 09:25:50 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-18 09:25:50 +0100
commitefcc1a0b9ec1d10cfea5b8cde8f042dbe0b66fa8 (patch)
tree489084d4e73864798acea39f4e7199541b6f586f
parent7f3a6848c09615bf4ed7d96ab80be6ca8707af54 (diff)
parentfec1a78618bae112ff8d1c0e6f078ea890cf283e (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/controls/qquickstyle.cpp src/controls/qquickstyleattached_p.h src/imports/controls/material/qquickmaterialstyle.cpp src/templates/qquickcontrol.cpp src/templates/qquickpopup.cpp Change-Id: I17c3c4d1040b89838f0903e0a17069b835895199
-rw-r--r--examples/controls/gallery/pages/ButtonPage.qml1
-rw-r--r--src/controls/qquickstyleattached.cpp21
-rw-r--r--src/controls/qquickstyleattached_p.h2
-rw-r--r--src/imports/controls/material/qquickmaterialstyle.cpp44
-rw-r--r--src/imports/controls/material/qquickmaterialtheme.cpp11
-rw-r--r--src/imports/controls/material/qquickmaterialtheme_p.h1
-rw-r--r--src/templates/qquickapplicationwindow.cpp2
-rw-r--r--src/templates/qquickcontrol.cpp33
-rw-r--r--src/templates/qquickcontrol_p_p.h2
-rw-r--r--src/templates/qquickoverlay.cpp2
-rw-r--r--src/templates/qquickpopup.cpp2
-rw-r--r--tests/auto/controls/data/tst_popup.qml276
-rw-r--r--tests/auto/material/data/tst_material.qml20
13 files changed, 270 insertions, 147 deletions
diff --git a/examples/controls/gallery/pages/ButtonPage.qml b/examples/controls/gallery/pages/ButtonPage.qml
index 329b53a7..4ac657d2 100644
--- a/examples/controls/gallery/pages/ButtonPage.qml
+++ b/examples/controls/gallery/pages/ButtonPage.qml
@@ -76,6 +76,7 @@ Flickable {
id: button
text: "Second"
width: itemWidth
+ highlighted: true
}
Button {
text: "Third"
diff --git a/src/controls/qquickstyleattached.cpp b/src/controls/qquickstyleattached.cpp
index 85a4b3c8..91ad6b10 100644
--- a/src/controls/qquickstyleattached.cpp
+++ b/src/controls/qquickstyleattached.cpp
@@ -147,14 +147,20 @@ static QList<QQuickStyleAttached *> findChildStyles(const QMetaObject *type, QOb
QQuickStyleAttached::QQuickStyleAttached(QObject *parent) : QObject(parent)
{
- QQuickItem *item = parentItem();
+ QQuickItem *item = qobject_cast<QQuickItem *>(parent);
+ if (!item) {
+ QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent);
+ if (popup)
+ item = popup->popupItem();
+ }
+
if (item)
QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Parent);
}
QQuickStyleAttached::~QQuickStyleAttached()
{
- QQuickItem *item = parentItem();
+ QQuickItem *item = qobject_cast<QQuickItem *>(parent());
if (item)
QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent);
@@ -176,17 +182,6 @@ QSharedPointer<QSettings> QQuickStyleAttached::settings(const QString &group)
return QSharedPointer<QSettings>();
}
-QQuickItem *QQuickStyleAttached::parentItem() const
-{
- QQuickItem *item = qobject_cast<QQuickItem *>(parent());
- if (!item) {
- QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent());
- if (popup)
- item = popup->popupItem();
- }
- return item;
-}
-
QList<QQuickStyleAttached *> QQuickStyleAttached::childStyles() const
{
return m_childStyles;
diff --git a/src/controls/qquickstyleattached_p.h b/src/controls/qquickstyleattached_p.h
index 591aa133..61e04bf6 100644
--- a/src/controls/qquickstyleattached_p.h
+++ b/src/controls/qquickstyleattached_p.h
@@ -73,8 +73,6 @@ public:
protected:
void init();
- QQuickItem *parentItem() const;
-
QList<QQuickStyleAttached *> childStyles() const;
QQuickStyleAttached *parentStyle() const;
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp
index 722f4f58..4788001f 100644
--- a/src/imports/controls/material/qquickmaterialstyle.cpp
+++ b/src/imports/controls/material/qquickmaterialstyle.cpp
@@ -413,6 +413,16 @@ static const QRgb switchDisabledTrackColorDark = 0x19FFFFFF;
static const QRgb checkBoxUncheckedRippleColorLight = 0x10000000;
static const QRgb checkBoxUncheckedRippleColorDark = 0x20FFFFFF;
+static QColor alphaBlend(const QColor &bg, const QColor &fg)
+{
+ QColor result;
+ result.setRedF(fg.redF() * fg.alphaF() + bg.redF() * (1.0 - fg.alphaF()));
+ result.setGreenF(fg.greenF() * fg.alphaF() + bg.greenF() * (1.0 - fg.alphaF()));
+ result.setBlueF(fg.blueF() * fg.alphaF() + bg.blueF() * (1.0 - fg.alphaF()));
+ result.setAlphaF(bg.alphaF() + fg.alphaF() * (1.0 - bg.alphaF()));
+ return result;
+}
+
QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickStyleAttached(parent),
m_explicitTheme(false),
m_explicitPrimary(false),
@@ -715,12 +725,14 @@ QColor QQuickMaterialStyle::raisedHighlightedButtonColor() const
QColor QQuickMaterialStyle::raisedHighlightedButtonHoverColor() const
{
- return shade(accentColor(), Shade600);
+ // Add overlaying black shadow 12% opacity
+ return alphaBlend(accentColor(), QColor::fromRgba(0x1F000000));
}
QColor QQuickMaterialStyle::raisedHighlightedButtonPressColor() const
{
- return shade(accentColor(), Shade700);
+ // Add overlaying black shadow 12% opacity
+ return alphaBlend(shade(accentColor(), m_theme == Light ? Shade700 : Shade100), QColor::fromRgba(0x1F000000));
}
QColor QQuickMaterialStyle::raisedHighlightedButtonDisabledColor() const
@@ -894,33 +906,33 @@ QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const
{
switch (shade) {
case Shade50:
- return lighterShade(color, 0.52);
+ return lighterShade(color, m_theme == Light ? 0.52 : 0.26);
case Shade100:
- return lighterShade(color, 0.37);
+ return lighterShade(color, m_theme == Light ? 0.37 : 0.11);
case Shade200:
- return lighterShade(color, 0.26);
+ return m_theme == Light ? lighterShade(color, 0.26) : color;
case Shade300:
- return lighterShade(color, 0.12);
+ return m_theme == Light ? lighterShade(color, 0.12) : darkerShade(color, 0.14);
case Shade400:
- return lighterShade(color, 0.06);
+ return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20);
case Shade500:
- return color;
+ return m_theme == Light ? color : darkerShade(color, 0.26);
case Shade600:
- return darkerShade(color, 0.06);
+ return darkerShade(color, m_theme == Light ? 0.06 : 0.32);
case Shade700:
- return darkerShade(color, 0.12);
+ return darkerShade(color, m_theme == Light ? 0.12 : 0.38);
case Shade800:
- return darkerShade(color, 0.18);
+ return darkerShade(color, m_theme == Light ? 0.18 : 0.44);
case Shade900:
- return darkerShade(color, 0.24);
+ return darkerShade(color, m_theme == Light ? 0.24 : 0.50);
case ShadeA100:
- return lighterShade(color, 0.54);
+ return lighterShade(color, m_theme == Light ? 0.54 : 0.28);
case ShadeA200:
- return lighterShade(color, 0.37);
+ return lighterShade(color, m_theme == Light ? 0.37 : 0.11);
case ShadeA400:
- return lighterShade(color, 0.06);
+ return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20);
case ShadeA700:
- return darkerShade(color, 0.12);
+ return darkerShade(color, m_theme == Light ? 0.12 : 0.38);
default:
Q_UNREACHABLE();
return QColor();
diff --git a/src/imports/controls/material/qquickmaterialtheme.cpp b/src/imports/controls/material/qquickmaterialtheme.cpp
index c373c61b..5c89d382 100644
--- a/src/imports/controls/material/qquickmaterialtheme.cpp
+++ b/src/imports/controls/material/qquickmaterialtheme.cpp
@@ -51,18 +51,16 @@ QQuickMaterialTheme::QQuickMaterialTheme(QPlatformTheme *theme)
if (font.exactMatch()) {
systemFont.setFamily(font.family());
buttonFont.setFamily(font.family());
- toolButtonFont.setFamily(font.family());
itemViewFont.setFamily(font.family());
menuItemFont.setFamily(font.family());
}
+ systemFont.setPixelSize(14);
+
buttonFont.setPixelSize(14);
buttonFont.setCapitalization(QFont::AllUppercase);
buttonFont.setWeight(QFont::Medium);
- toolButtonFont.setPixelSize(14);
- toolButtonFont.setCapitalization(QFont::AllUppercase);
-
itemViewFont.setPixelSize(14);
itemViewFont.setWeight(QFont::Medium);
@@ -78,15 +76,12 @@ const QFont *QQuickMaterialTheme::font(QPlatformTheme::Font type) const
switch (type) {
case QPlatformTheme::TabButtonFont:
case QPlatformTheme::PushButtonFont:
- return &buttonFont;
case QPlatformTheme::ToolButtonFont:
- return &toolButtonFont;
+ return &buttonFont;
case QPlatformTheme::ItemViewFont:
return &itemViewFont;
case QPlatformTheme::MenuItemFont:
case QPlatformTheme::ComboMenuItemFont:
- case QPlatformTheme::CheckBoxFont:
- case QPlatformTheme::RadioButtonFont:
return &menuItemFont;
default:
return &systemFont;
diff --git a/src/imports/controls/material/qquickmaterialtheme_p.h b/src/imports/controls/material/qquickmaterialtheme_p.h
index 27ffdddc..af899c6f 100644
--- a/src/imports/controls/material/qquickmaterialtheme_p.h
+++ b/src/imports/controls/material/qquickmaterialtheme_p.h
@@ -66,7 +66,6 @@ public:
private:
QFont systemFont;
QFont buttonFont;
- QFont toolButtonFont;
QFont itemViewFont;
QFont menuItemFont;
};
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp
index 754ce510..55a25249 100644
--- a/src/templates/qquickapplicationwindow.cpp
+++ b/src/templates/qquickapplicationwindow.cpp
@@ -511,7 +511,7 @@ void QQuickApplicationWindow::setLocale(const QLocale &locale)
return;
d->locale = locale;
- QQuickControlPrivate::updateLocaleRecur(contentItem(), locale);
+ QQuickControlPrivate::updateLocaleRecur(QQuickWindow::contentItem(), locale);
emit localeChanged();
}
diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp
index 4195eb02..80af03e1 100644
--- a/src/templates/qquickcontrol.cpp
+++ b/src/templates/qquickcontrol.cpp
@@ -382,7 +382,7 @@ void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem::
if (change == ItemParentHasChanged && value.item) {
d->resolveFont();
if (!d->hasLocale)
- d->locale = QQuickControlPrivate::calcLocale(d->parentItem);
+ d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false
}
}
@@ -664,22 +664,21 @@ void QQuickControl::resetLocale()
if (!d->hasLocale)
return;
+ d->hasLocale = false;
d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false
}
-QLocale QQuickControlPrivate::calcLocale(QQuickItem *q)
+QLocale QQuickControlPrivate::calcLocale(const QQuickItem *item)
{
- QQuickItem *p = q;
+ const QQuickItem *p = item;
while (p) {
- if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(p)) {
- if (const QQuickPopup *qp = qobject_cast<const QQuickPopup *>(qpi->parent())) {
- p = qp->parentItem();
- continue;
- }
+ if (const QQuickPopupItem *popup = qobject_cast<const QQuickPopupItem *>(p)) {
+ item = popup;
+ break;
}
- if (QQuickControl *qc = qobject_cast<QQuickControl *>(p))
- return qc->locale();
+ if (const QQuickControl *control = qobject_cast<const QQuickControl *>(p))
+ return control->locale();
QVariant v = p->property("locale");
if (v.isValid() && v.userType() == QMetaType::QLocale)
@@ -688,9 +687,9 @@ QLocale QQuickControlPrivate::calcLocale(QQuickItem *q)
p = p->parentItem();
}
- if (q) {
- if (QQuickApplicationWindow *w = qobject_cast<QQuickApplicationWindow *>(q->window()))
- return w->locale();
+ if (item) {
+ if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window()))
+ return window->locale();
}
return QLocale();
@@ -724,14 +723,6 @@ void QQuickControlPrivate::updateLocaleRecur(QQuickItem *item, const QLocale &l)
else
updateLocaleRecur(child, l);
}
-
- const auto children = item->children();
- for (QObject *child : children) {
- if (QQuickPopup *qp = qobject_cast<QQuickPopup *>(child)) {
- if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(qp->popupItem()))
- updateLocaleRecur(qpi, l);
- }
- }
}
/*!
diff --git a/src/templates/qquickcontrol_p_p.h b/src/templates/qquickcontrol_p_p.h
index c0b0ee81..01a64b58 100644
--- a/src/templates/qquickcontrol_p_p.h
+++ b/src/templates/qquickcontrol_p_p.h
@@ -106,7 +106,7 @@ public:
void updateLocale(const QLocale &l, bool e);
static void updateLocaleRecur(QQuickItem *item, const QLocale &l);
- static QLocale calcLocale(QQuickItem *);
+ static QLocale calcLocale(const QQuickItem *item);
// TODO: QLazilyAllocated<ExtraData>
QFont font;
diff --git a/src/templates/qquickoverlay.cpp b/src/templates/qquickoverlay.cpp
index d210024a..8af5cb88 100644
--- a/src/templates/qquickoverlay.cpp
+++ b/src/templates/qquickoverlay.cpp
@@ -64,7 +64,7 @@ public:
void QQuickOverlayPrivate::popupAboutToShow()
{
Q_Q(QQuickOverlay);
- if (!background || modalPopups > 1)
+ if (!background)
return;
QQuickPopup *popup = qobject_cast<QQuickPopup *>(q->sender());
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index aadcd602..b98a189f 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -1212,8 +1212,6 @@ void QQuickPopup::setParentItem(QQuickItem *parent)
d->parentItem = parent;
if (d->positioner.parentItem())
d->positioner.setParentItem(parent);
- if (parent)
- QQuickControlPrivate::updateLocaleRecur(d->popupItem, QQuickControlPrivate::calcLocale(parent));
emit parentChanged();
}
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
index 3d54574a..67d9ceac 100644
--- a/tests/auto/controls/data/tst_popup.qml
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -51,6 +51,12 @@ TestCase {
when: windowShown
name: "Popup"
+ ApplicationWindow {
+ id: applicationWindow
+ width: 480
+ height: 360
+ }
+
Component {
id: popupTemplate
T.Popup { }
@@ -432,11 +438,8 @@ TestCase {
Component {
id: localeComponent
Pane {
- id: panel
- property alias button: _button;
- property alias popup: _popup;
- property alias button1: _button1;
- property alias button2: _button2;
+ property alias button: _button
+ property alias popup: _popup
locale: Qt.locale("en_US")
Column {
Button {
@@ -445,6 +448,8 @@ TestCase {
locale: Qt.locale("nb_NO")
Popup {
id: _popup
+ property alias button1: _button1
+ property alias button2: _button2
y: _button.height
implicitHeight: Math.min(396, _column.contentHeight)
contentItem: Column {
@@ -466,49 +471,61 @@ TestCase {
function test_locale() { // QTBUG_50984
// test looking up natural locale from ancestors
- var control = localeComponent.createObject(testCase)
+ var control = localeComponent.createObject(applicationWindow.contentItem)
verify(control)
verify(control.button)
verify(control.popup)
- verify(control.button1)
- verify(control.button2)
+ verify(control.popup.button1)
+ verify(control.popup.button2)
+ applicationWindow.visible = true
waitForRendering(control)
- control.forceActiveFocus()
- verify(control.activeFocus)
-
- var popup = control.popup
- popup.open()
+ control.popup.open()
+ verify(control.popup.visible)
+ control.ApplicationWindow.window.locale = Qt.locale("fi_FI")
+ compare(control.ApplicationWindow.window.locale.name, "fi_FI")
compare(control.locale.name, "en_US")
compare(control.button.locale.name, "nb_NO")
- compare(control.button1.locale.name, "nb_NO")
- compare(control.button2.locale.name, "nb_NO")
+ compare(control.popup.button1.locale.name, "fi_FI")
+ compare(control.popup.button2.locale.name, "fi_FI")
+ control.ApplicationWindow.window.locale = undefined
+ applicationWindow.visible = false
control.destroy()
}
Component {
- id: localeComponent2
+ id: localeChangeComponent
Pane {
- id: panel
- property alias button: _button;
- property alias popup: _popup;
- property alias button1: _button1;
- property alias button2: _button2;
- property alias localespy: _lspy;
- property alias mirroredspy: _mspy;
- property alias localespy_1: _lspy_1;
- property alias mirroredspy_1: _mspy_1;
- property alias localespy_2: _lspy_2;
- property alias mirroredspy_2: _mspy_2;
+ id: _pane
+ property alias button: _button
+ property alias popup: _popup
+ property SignalSpy localespy: SignalSpy {
+ target: _pane
+ signalName: "localeChanged"
+ }
+ property SignalSpy mirrorspy: SignalSpy {
+ target: _pane
+ signalName: "mirroredChanged"
+ }
Column {
Button {
id: _button
text: "Button"
+ property SignalSpy localespy: SignalSpy {
+ target: _button
+ signalName: "localeChanged"
+ }
+ property SignalSpy mirrorspy: SignalSpy {
+ target: _button
+ signalName: "mirroredChanged"
+ }
Popup {
id: _popup
+ property alias button1: _button1
+ property alias button2: _button2
y: _button.height
implicitHeight: Math.min(396, _column.contentHeight)
contentItem: Column {
@@ -516,13 +533,11 @@ TestCase {
Button {
id: _button1
text: "Button 1"
- SignalSpy {
- id: _lspy_1
+ property SignalSpy localespy: SignalSpy {
target: _button1
signalName: "localeChanged"
}
- SignalSpy {
- id: _mspy_1
+ property SignalSpy mirrorspy: SignalSpy {
target: _button1
signalName: "mirroredChanged"
}
@@ -530,84 +545,151 @@ TestCase {
Button {
id: _button2
text: "Button 2"
- SignalSpy {
- id: _lspy_2
+ property SignalSpy localespy: SignalSpy {
target: _button2
signalName: "localeChanged"
}
- SignalSpy {
- id: _mspy_2
+ property SignalSpy mirrorspy: SignalSpy {
target: _button2
signalName: "mirroredChanged"
}
}
}
}
- SignalSpy {
- id: _lspy
- target: _button
- signalName: "localeChanged"
- }
- SignalSpy {
- id: _mspy
- target: _button
- signalName: "mirroredChanged"
- }
}
}
}
}
- function test_locale_2() { // QTBUG_50984
+ function test_locale_changes() { // QTBUG_50984
// test default locale and locale inheritance
- var control = localeComponent2.createObject(testCase)
+ var control = localeChangeComponent.createObject(applicationWindow.contentItem)
verify(control)
verify(control.button)
verify(control.popup)
- verify(control.button1)
- verify(control.button2)
+ verify(control.popup.button1)
+ verify(control.popup.button2)
+ applicationWindow.visible = true
waitForRendering(control)
- control.forceActiveFocus()
- verify(control.activeFocus)
-
- var popup = control.popup
- popup.open()
+ control.popup.open()
+ verify(control.popup.visible)
var defaultLocale = Qt.locale()
-
+ compare(control.ApplicationWindow.window.locale.name, defaultLocale.name)
compare(control.locale.name, defaultLocale.name)
compare(control.button.locale.name, defaultLocale.name)
- compare(control.button1.locale.name, defaultLocale.name)
- compare(control.button2.locale.name, defaultLocale.name)
+ compare(control.popup.button1.locale.name, defaultLocale.name)
+ compare(control.popup.button2.locale.name, defaultLocale.name)
- control.locale = Qt.locale("nb_NO")
- control.localespy.wait()
- compare(control.localespy.count, 1)
- compare(control.mirroredspy.count, 0)
+ control.ApplicationWindow.window.locale = Qt.locale("nb_NO")
+ compare(control.ApplicationWindow.window.locale.name, "nb_NO")
compare(control.locale.name, "nb_NO")
compare(control.button.locale.name, "nb_NO")
- compare(control.button1.locale.name, "nb_NO")
- compare(control.button2.locale.name, "nb_NO")
- compare(control.localespy_1.count, 1)
- compare(control.mirroredspy_1.count, 0)
- compare(control.localespy_2.count, 1)
- compare(control.mirroredspy_2.count, 0)
+ compare(control.popup.button1.locale.name, "nb_NO")
+ compare(control.popup.button2.locale.name, "nb_NO")
+ compare(control.localespy.count, 1)
+ compare(control.button.localespy.count, 1)
+ compare(control.popup.button1.localespy.count, 1)
+ compare(control.popup.button2.localespy.count, 1)
- control.locale = Qt.locale("ar_EG")
- control.localespy.wait()
+ control.ApplicationWindow.window.locale = undefined
+ compare(control.ApplicationWindow.window.locale.name, defaultLocale.name)
+ compare(control.locale.name, defaultLocale.name)
+ compare(control.button.locale.name, defaultLocale.name)
+ compare(control.popup.button1.locale.name, defaultLocale.name)
+ compare(control.popup.button2.locale.name, defaultLocale.name)
compare(control.localespy.count, 2)
- compare(control.mirroredspy.count, 1)
+ compare(control.button.localespy.count, 2)
+ compare(control.popup.button1.localespy.count, 2)
+ compare(control.popup.button2.localespy.count, 2)
+
+ control.locale = Qt.locale("ar_EG")
+ compare(control.ApplicationWindow.window.locale.name, defaultLocale.name)
compare(control.locale.name, "ar_EG")
compare(control.button.locale.name, "ar_EG")
- compare(control.button1.locale.name, "ar_EG")
- compare(control.button2.locale.name, "ar_EG")
- compare(control.localespy_1.count, 2)
- compare(control.mirroredspy_1.count, 1)
- compare(control.localespy_2.count, 2)
- compare(control.mirroredspy_2.count, 1)
-
+ compare(control.popup.button1.locale.name, defaultLocale.name)
+ compare(control.popup.button2.locale.name, defaultLocale.name)
+ compare(control.localespy.count, 3)
+ compare(control.mirrorspy.count, 1)
+ compare(control.button.localespy.count, 3)
+ compare(control.button.mirrorspy.count, 1)
+ compare(control.popup.button1.localespy.count, 2)
+ compare(control.popup.button2.localespy.count, 2)
+
+ control.ApplicationWindow.window.locale = Qt.locale("ar_EG")
+ compare(control.ApplicationWindow.window.locale.name, "ar_EG")
+ compare(control.locale.name, "ar_EG")
+ compare(control.button.locale.name, "ar_EG")
+ compare(control.popup.button1.locale.name, "ar_EG")
+ compare(control.popup.button2.locale.name, "ar_EG")
+ compare(control.localespy.count, 3)
+ compare(control.mirrorspy.count, 1)
+ compare(control.button.localespy.count, 3)
+ compare(control.button.mirrorspy.count, 1)
+ compare(control.popup.button1.localespy.count, 3)
+ compare(control.popup.button1.mirrorspy.count, 1)
+ compare(control.popup.button2.localespy.count, 3)
+ compare(control.popup.button2.mirrorspy.count, 1)
+
+ control.button.locale = Qt.locale("nb_NO")
+ compare(control.ApplicationWindow.window.locale.name, "ar_EG")
+ compare(control.locale.name, "ar_EG")
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.popup.button1.locale.name, "ar_EG")
+ compare(control.popup.button2.locale.name, "ar_EG")
+ compare(control.localespy.count, 3)
+ compare(control.mirrorspy.count, 1)
+ compare(control.button.localespy.count, 4)
+ compare(control.button.mirrorspy.count, 2)
+ compare(control.popup.button1.localespy.count, 3)
+ compare(control.popup.button2.localespy.count, 3)
+
+ control.locale = undefined
+ compare(control.ApplicationWindow.window.locale.name, "ar_EG")
+ compare(control.locale.name, "ar_EG")
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.popup.button1.locale.name, "ar_EG")
+ compare(control.popup.button2.locale.name, "ar_EG")
+ compare(control.localespy.count, 3)
+ compare(control.mirrorspy.count, 1)
+ compare(control.button.localespy.count, 4)
+ compare(control.button.mirrorspy.count, 2)
+ compare(control.popup.button1.localespy.count, 3)
+ compare(control.popup.button2.localespy.count, 3)
+
+ control.popup.button1.locale = Qt.locale("nb_NO")
+ compare(control.ApplicationWindow.window.locale.name, "ar_EG")
+ compare(control.locale.name, "ar_EG")
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.popup.button1.locale.name, "nb_NO")
+ compare(control.popup.button2.locale.name, "ar_EG")
+ compare(control.localespy.count, 3)
+ compare(control.mirrorspy.count, 1)
+ compare(control.button.localespy.count, 4)
+ compare(control.button.mirrorspy.count, 2)
+ compare(control.popup.button1.localespy.count, 4)
+ compare(control.popup.button1.mirrorspy.count, 2)
+ compare(control.popup.button2.localespy.count, 3)
+ compare(control.popup.button2.mirrorspy.count, 1)
+
+ control.ApplicationWindow.window.locale = undefined
+ compare(control.ApplicationWindow.window.locale.name, defaultLocale.name)
+ compare(control.locale.name, defaultLocale.name)
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.popup.button1.locale.name, "nb_NO")
+ compare(control.popup.button2.locale.name, defaultLocale.name)
+ compare(control.localespy.count, 4)
+ compare(control.mirrorspy.count, 2)
+ compare(control.button.localespy.count, 4)
+ compare(control.button.mirrorspy.count, 2)
+ compare(control.popup.button1.localespy.count, 4)
+ compare(control.popup.button1.mirrorspy.count, 2)
+ compare(control.popup.button2.localespy.count, 4)
+ compare(control.popup.button2.mirrorspy.count, 2)
+
+ applicationWindow.visible = false
control.destroy()
}
@@ -626,4 +708,44 @@ TestCase {
control.destroy()
}
+
+ Component {
+ id: overlayTest
+ ApplicationWindow {
+ property alias popup1: popup1
+ property alias popup2: popup2
+ visible: true
+ Popup {
+ id: popup1
+ modal: true
+ exit: Transition { PauseAnimation { duration: 200 } }
+ }
+ Popup {
+ id: popup2
+ modal: true
+ }
+ }
+ }
+
+ function test_overlay() {
+ var window = overlayTest.createObject(testCase)
+ verify(window)
+
+ window.requestActivate()
+ tryCompare(window, "active", true)
+ compare(window.overlay.background.opacity, 0.0)
+
+ window.popup1.open()
+ compare(window.popup1.visible, true)
+ compare(window.popup2.visible, false)
+ tryCompare(window.overlay.background, "opacity", 1.0)
+
+ window.popup1.close()
+ window.popup2.open()
+ compare(window.popup2.visible, true)
+ tryCompare(window.popup1, "visible", false)
+ compare(window.overlay.background.opacity, 1.0)
+
+ window.destroy()
+ }
}
diff --git a/tests/auto/material/data/tst_material.qml b/tests/auto/material/data/tst_material.qml
index fbb6e279..c686fef8 100644
--- a/tests/auto/material/data/tst_material.qml
+++ b/tests/auto/material/data/tst_material.qml
@@ -396,24 +396,36 @@ TestCase {
{tag: "TabButton:capitalization", type: "TabButton", attribute: "capitalization", value: Font.AllUppercase, window: Font.Capitalize, pane: Font.AllLowercase},
{tag: "ToolButton:pixelSize", type: "ToolButton", attribute: "pixelSize", value: 14, window: 20, pane: 10},
- {tag: "ToolButton:weight", type: "ToolButton", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
+ {tag: "ToolButton:weight", type: "ToolButton", attribute: "weight", value: Font.Medium, window: Font.Black, pane: Font.Bold},
{tag: "ToolButton:capitalization", type: "ToolButton", attribute: "capitalization", value: Font.AllUppercase, window: Font.Capitalize, pane: Font.AllLowercase},
{tag: "ItemDelegate:pixelSize", type: "ItemDelegate", attribute: "pixelSize", value: 14, window: 20, pane: 10},
{tag: "ItemDelegate:weight", type: "ItemDelegate", attribute: "weight", value: Font.Medium, window: Font.Black, pane: Font.Bold},
{tag: "ItemDelegate:capitalization", type: "ItemDelegate", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
- {tag: "CheckBox:pixelSize", type: "CheckBox", attribute: "pixelSize", value: 16, window: 20, pane: 10},
+ {tag: "Label:pixelSize", type: "Label", attribute: "pixelSize", value: 14, window: 20, pane: 10},
+ {tag: "Label:weight", type: "Label", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
+ {tag: "Label:capitalization", type: "Label", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
+
+ {tag: "CheckBox:pixelSize", type: "CheckBox", attribute: "pixelSize", value: 14, window: 20, pane: 10},
{tag: "CheckBox:weight", type: "CheckBox", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
{tag: "CheckBox:capitalization", type: "CheckBox", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
- {tag: "RadioButton:pixelSize", type: "RadioButton", attribute: "pixelSize", value: 16, window: 20, pane: 10},
+ {tag: "RadioButton:pixelSize", type: "RadioButton", attribute: "pixelSize", value: 14, window: 20, pane: 10},
{tag: "RadioButton:weight", type: "RadioButton", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
{tag: "RadioButton:capitalization", type: "RadioButton", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
+ {tag: "Switch:pixelSize", type: "Switch", attribute: "pixelSize", value: 14, window: 20, pane: 10},
+ {tag: "Switch:weight", type: "Switch", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
+ {tag: "Switch:capitalization", type: "Switch", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
+
{tag: "MenuItem:pixelSize", type: "MenuItem", attribute: "pixelSize", value: 16, window: 20, pane: 10},
{tag: "MenuItem:weight", type: "MenuItem", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
- {tag: "MenuItem:capitalization", type: "MenuItem", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase}
+ {tag: "MenuItem:capitalization", type: "MenuItem", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase},
+
+ {tag: "ComboBox:pixelSize", type: "ComboBox", attribute: "pixelSize", value: 16, window: 20, pane: 10},
+ {tag: "ComboBox:weight", type: "ComboBox", attribute: "weight", value: Font.Normal, window: Font.Black, pane: Font.Bold},
+ {tag: "ComboBox:capitalization", type: "ComboBox", attribute: "capitalization", value: Font.MixedCase, window: Font.Capitalize, pane: Font.AllLowercase}
]
}