aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-11-24 11:49:15 +0100
committerLiang Qi <liang.qi@qt.io>2016-11-24 11:49:15 +0100
commit225c4a724e058851c9a2b4ffe6032b6f84cfd90c (patch)
tree8a28a9f8ef4d98d9e5536033b911d33c03f8b8c3 /src
parent6472d2541c83c1259a99b40216beaf48b56e94b4 (diff)
parent6f6e073815d5b05aba553b83809fb701541260c6 (diff)
Merge remote-tracking branch 'origin/5.7.1' into 5.7
Diffstat (limited to 'src')
-rw-r--r--src/quicktemplates2/qquickoverlay.cpp17
-rw-r--r--src/quicktemplates2/qquickoverlay_p_p.h1
2 files changed, 13 insertions, 5 deletions
diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp
index ba0dfc46..4a95244f 100644
--- a/src/quicktemplates2/qquickoverlay.cpp
+++ b/src/quicktemplates2/qquickoverlay.cpp
@@ -193,6 +193,13 @@ void QQuickOverlayPrivate::removePopup(QQuickPopup *popup)
q->setVisible(!allDrawers.isEmpty() || !q->childItems().isEmpty());
}
+void QQuickOverlayPrivate::setMouseGrabberPopup(QQuickPopup *popup)
+{
+ if (popup && !popup->isVisible())
+ popup = nullptr;
+ mouseGrabberPopup = popup;
+}
+
QQuickOverlay::QQuickOverlay(QQuickItem *parent)
: QQuickItem(*(new QQuickOverlayPrivate), parent)
{
@@ -326,7 +333,7 @@ void QQuickOverlay::mousePressEvent(QMouseEvent *event)
for (QQuickDrawer *drawer : drawers) {
QQuickDrawerPrivate *p = QQuickDrawerPrivate::get(drawer);
if (p->startDrag(window(), event)) {
- d->mouseGrabberPopup = drawer;
+ d->setMouseGrabberPopup(drawer);
return;
}
}
@@ -336,7 +343,7 @@ void QQuickOverlay::mousePressEvent(QMouseEvent *event)
const auto popups = d->stackingOrderPopups();
for (QQuickPopup *popup : popups) {
if (popup->overlayEvent(this, event)) {
- d->mouseGrabberPopup = popup;
+ d->setMouseGrabberPopup(popup);
return;
}
}
@@ -359,7 +366,7 @@ void QQuickOverlay::mouseReleaseEvent(QMouseEvent *event)
if (d->mouseGrabberPopup) {
d->mouseGrabberPopup->overlayEvent(this, event);
- d->mouseGrabberPopup = nullptr;
+ d->setMouseGrabberPopup(nullptr);
} else {
const auto popups = d->stackingOrderPopups();
for (QQuickPopup *popup : popups) {
@@ -405,7 +412,7 @@ bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
case QEvent::MouseButtonPress:
emit pressed();
if (popup->overlayEvent(item, event)) {
- d->mouseGrabberPopup = popup;
+ d->setMouseGrabberPopup(popup);
return true;
}
break;
@@ -413,7 +420,7 @@ bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
return popup->overlayEvent(item, event);
case QEvent::MouseButtonRelease:
emit released();
- d->mouseGrabberPopup = nullptr;
+ d->setMouseGrabberPopup(nullptr);
return popup->overlayEvent(item, event);
default:
break;
diff --git a/src/quicktemplates2/qquickoverlay_p_p.h b/src/quicktemplates2/qquickoverlay_p_p.h
index 6201908e..6e72b39a 100644
--- a/src/quicktemplates2/qquickoverlay_p_p.h
+++ b/src/quicktemplates2/qquickoverlay_p_p.h
@@ -72,6 +72,7 @@ public:
void addPopup(QQuickPopup *popup);
void removePopup(QQuickPopup *popup);
+ void setMouseGrabberPopup(QQuickPopup *popup);
void popupAboutToShow();
void popupAboutToHide();