diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-05-11 23:23:55 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-05-12 07:57:27 +0000 |
commit | 8857bdecc2174fd3ab5935af597f1b8a30d15c96 (patch) | |
tree | 131d8f317981a28b9aab9306aa176599faa27ebf /src/quicktemplates2/qquickoverlay.cpp | |
parent | 9cf30f1613bc18a1f16c70c8d293dad3bc23b6d9 (diff) |
Popup: respect "dim: false" for modal popups
Task-number: QTBUG-53309
Change-Id: I024dfa32342a7c936f5ea53586c11e50d65845e9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickoverlay.cpp')
-rw-r--r-- | src/quicktemplates2/qquickoverlay.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp index 04ed8470..0fb9f3ca 100644 --- a/src/quicktemplates2/qquickoverlay.cpp +++ b/src/quicktemplates2/qquickoverlay.cpp @@ -68,14 +68,14 @@ void QQuickOverlayPrivate::popupAboutToShow() { Q_Q(QQuickOverlay); QQuickPopup *popup = qobject_cast<QQuickPopup *>(q->sender()); - if (!popup) + if (!popup || !popup->dim()) return; // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors if (popup->isModal()) { if (modal) QQmlProperty::write(modal, QStringLiteral("opacity"), 1.0); - } else if (popup->dim()) { + } else { if (modeless) QQmlProperty::write(modeless, QStringLiteral("opacity"), 1.0); } @@ -85,14 +85,14 @@ void QQuickOverlayPrivate::popupAboutToHide() { Q_Q(QQuickOverlay); QQuickPopup *popup = qobject_cast<QQuickPopup *>(q->sender()); - if (!popup) + if (!popup || !popup->dim()) return; // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors if (popup->isModal()) { if (modal && modalPopups <= 1) QQmlProperty::write(modal, QStringLiteral("opacity"), 0.0); - } else if (popup->dim()) { + } else { if (modeless) QQmlProperty::write(modeless, QStringLiteral("opacity"), 0.0); } @@ -102,7 +102,7 @@ void QQuickOverlayPrivate::drawerPositionChange() { Q_Q(QQuickOverlay); QQuickDrawer *drawer = qobject_cast<QQuickDrawer *>(q->sender()); - if (!drawer) + if (!drawer || !drawer->dim()) return; // call QQuickItem::setOpacity() directly to avoid triggering QML Behaviors @@ -110,7 +110,7 @@ void QQuickOverlayPrivate::drawerPositionChange() if (drawer->isModal()) { if (modal) modal->setOpacity(drawer->position()); - } else if (drawer->dim()) { + } else { if (modeless) modeless->setOpacity(drawer->position()); } @@ -133,10 +133,13 @@ void QQuickOverlayPrivate::restackOverlay() QQuickPopup *modelessPopup = nullptr; for (auto it = popups.crbegin(), end = popups.crend(); it != end; ++it) { QQuickPopup *popup = (*it); + if (!popup->dim()) + continue; + if (popup->isModal()) { if (!modalPopup || modalPopup->z() >= popup->z()) modalPopup = popup; - } else if (popup->dim()) { + } else { if (!modelessPopup) modelessPopup = popup; } |