aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickwindow.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-07-29 00:11:42 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2016-07-28 22:55:48 +0000
commit451efdbe41d3381c3d8c42117662c2eea5436ff0 (patch)
tree1e1bcc430160db4343673426f96b4895c94e052b /src/quick/items/qquickwindow.cpp
parentc796b43c429a7a3f04784e32b1e1a07d9da57109 (diff)
Move mouse release handling into deliverMouseEvent
Change-Id: I4071a5fa217230883b6b99b2f37cdcd459aa14c5 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'src/quick/items/qquickwindow.cpp')
-rw-r--r--src/quick/items/qquickwindow.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 16d99e961a..72b181fcdd 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -1662,8 +1662,13 @@ void QQuickWindowPrivate::deliverMouseEvent(QMouseEvent *event)
me->accept();
q->sendEvent(mouseGrabberItem, me.data());
event->setAccepted(me->isAccepted());
+
+ // release event, make sure to ungrab if there still is a grabber
+ if (event->type() == QEvent::MouseButtonRelease && !event->buttons() && q->mouseGrabberItem())
+ q->mouseGrabberItem()->ungrabMouse();
} else {
// send initial press
+ event->setAccepted(false);
if ((event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick) &&
(event->buttons() & event->button()) == event->buttons()) {
bool delivered = deliverInitialMousePressEvent(event);
@@ -2022,14 +2027,7 @@ void QQuickWindowPrivate::handleMouseEvent(QMouseEvent *event)
case QEvent::MouseButtonRelease:
Q_QUICK_INPUT_PROFILE(QQuickProfiler::Mouse, QQuickProfiler::InputMouseRelease, event->button(),
event->buttons());
- if (!q->mouseGrabberItem()) {
- event->ignore();
- return;
- }
-
deliverPointerEvent(pointerEventInstance(event));
- if (q->mouseGrabberItem() && !event->buttons())
- q->mouseGrabberItem()->ungrabMouse();
break;
case QEvent::MouseButtonDblClick:
Q_QUICK_INPUT_PROFILE(QQuickProfiler::Mouse, QQuickProfiler::InputMouseDoubleClick,