From 8857bdecc2174fd3ab5935af597f1b8a30d15c96 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 11 May 2016 23:23:55 +0200 Subject: Popup: respect "dim: false" for modal popups Task-number: QTBUG-53309 Change-Id: I024dfa32342a7c936f5ea53586c11e50d65845e9 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickoverlay.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/quicktemplates2/qquickoverlay.cpp') 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(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(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(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; } -- cgit v1.2.3