diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-18 09:25:50 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-18 09:25:50 +0100 |
commit | efcc1a0b9ec1d10cfea5b8cde8f042dbe0b66fa8 (patch) | |
tree | 489084d4e73864798acea39f4e7199541b6f586f | |
parent | 7f3a6848c09615bf4ed7d96ab80be6ca8707af54 (diff) | |
parent | fec1a78618bae112ff8d1c0e6f078ea890cf283e (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.qml | 1 | ||||
-rw-r--r-- | src/controls/qquickstyleattached.cpp | 21 | ||||
-rw-r--r-- | src/controls/qquickstyleattached_p.h | 2 | ||||
-rw-r--r-- | src/imports/controls/material/qquickmaterialstyle.cpp | 44 | ||||
-rw-r--r-- | src/imports/controls/material/qquickmaterialtheme.cpp | 11 | ||||
-rw-r--r-- | src/imports/controls/material/qquickmaterialtheme_p.h | 1 | ||||
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 2 | ||||
-rw-r--r-- | src/templates/qquickcontrol.cpp | 33 | ||||
-rw-r--r-- | src/templates/qquickcontrol_p_p.h | 2 | ||||
-rw-r--r-- | src/templates/qquickoverlay.cpp | 2 | ||||
-rw-r--r-- | src/templates/qquickpopup.cpp | 2 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 276 | ||||
-rw-r--r-- | tests/auto/material/data/tst_material.qml | 20 |
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} ] } |