aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickoverlay.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-05-11 23:23:55 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-05-12 07:57:27 +0000
commit8857bdecc2174fd3ab5935af597f1b8a30d15c96 (patch)
tree131d8f317981a28b9aab9306aa176599faa27ebf /src/quicktemplates2/qquickoverlay.cpp
parent9cf30f1613bc18a1f16c70c8d293dad3bc23b6d9 (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.cpp17
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;
}