aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickpopup.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-29 08:16:00 +0300
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-29 08:16:17 +0300
commit9f63a8300f3164c5e210321d31387a56a6faeb07 (patch)
treeea87e4e6d26879c5fb544e1089a15e9ba76e8b14 /src/quicktemplates2/qquickpopup.cpp
parent7fe5e4c6858a74db582d95fae29a591b40ff7cdd (diff)
parentc028ada0384ffaf22058536d0a7cba8e89f2106a (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Diffstat (limited to 'src/quicktemplates2/qquickpopup.cpp')
-rw-r--r--src/quicktemplates2/qquickpopup.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 775d4e6a..a09c25ed 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -284,7 +284,7 @@ bool QQuickPopupPrivate::tryClose(const QPointF &pos, QQuickPopup::ClosePolicy f
const bool onOutside = closePolicy & (flags & outsideFlags);
const bool onOutsideParent = closePolicy & (flags & outsideParentFlags);
if (onOutside || onOutsideParent) {
- if (!popupItem->contains(popupItem->mapFromScene(pos))) {
+ if (!contains(pos)) {
if (!onOutsideParent || !parentItem || !parentItem->contains(parentItem->mapFromScene(pos))) {
closeOrReject();
return true;
@@ -294,6 +294,11 @@ bool QQuickPopupPrivate::tryClose(const QPointF &pos, QQuickPopup::ClosePolicy f
return false;
}
+bool QQuickPopupPrivate::contains(const QPointF &scenePos) const
+{
+ return popupItem->contains(popupItem->mapFromScene(scenePos));
+}
+
bool QQuickPopupPrivate::acceptTouch(const QTouchEvent::TouchPoint &point)
{
if (point.id() == touchId)
@@ -319,6 +324,7 @@ bool QQuickPopupPrivate::blockInput(QQuickItem *item, const QPointF &point) cons
bool QQuickPopupPrivate::handlePress(QQuickItem *item, const QPointF &point, ulong timestamp)
{
Q_UNUSED(timestamp);
+ pressPoint = point;
tryClose(point, QQuickPopup::CloseOnPressOutside | QQuickPopup::CloseOnPressOutsideParent);
return blockInput(item, point);
}
@@ -333,6 +339,7 @@ bool QQuickPopupPrivate::handleRelease(QQuickItem *item, const QPointF &point, u
{
Q_UNUSED(timestamp);
tryClose(point, QQuickPopup::CloseOnReleaseOutside | QQuickPopup::CloseOnReleaseOutsideParent);
+ pressPoint = QPointF();
touchId = -1;
return blockInput(item, point);
}
@@ -346,6 +353,7 @@ void QQuickPopupPrivate::handleUngrab()
if (p->mouseGrabberPopup == q)
p->mouseGrabberPopup = nullptr;
}
+ pressPoint = QPointF();
touchId = -1;
}