aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickdrawer.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-24 20:41:44 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-25 12:40:13 +0000
commit381a2cf4a5a65f446b41240e8a6e6a6356988cb2 (patch)
tree0c653a2c1f8ef7b95b16a0060693154fd0997a9d /src/quicktemplates2/qquickdrawer.cpp
parent039c25daac5ec6b96c0aa074eae2a983a1b5aabd (diff)
QQuickPopup: tryClose() via handlePress() & handleRelease()
This is a preparation step to make Drawer compatible with touch events. It will eventually override handlePress/Move/Release() to deal with both touch and mouse input. Change-Id: I8ae21f6909ca51f86f19dbe68a3e820e9af676ab Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickdrawer.cpp')
-rw-r--r--src/quicktemplates2/qquickdrawer.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp
index b5b4100d..d8397e92 100644
--- a/src/quicktemplates2/qquickdrawer.cpp
+++ b/src/quicktemplates2/qquickdrawer.cpp
@@ -395,6 +395,8 @@ bool QQuickDrawerPrivate::ungrabMouse(QMouseEvent *event)
bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event)
{
+ handlePress(item->mapToScene(event->localPos()));
+
offset = 0;
pressPoint = event->windowPos();
velocityCalculator.startMeasuring(pressPoint, event->timestamp());
@@ -410,7 +412,7 @@ bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *e
bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event)
{
Q_Q(QQuickDrawer);
- Q_UNUSED(item);
+ handleMove(item->mapToScene(event->localPos()));
// Don't react to synthesized mouse move events at INF,INF coordinates.
// QQuickWindowPrivate::translateTouchToMouse() uses them to clear hover
@@ -446,9 +448,9 @@ bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *ev
bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event)
{
- Q_UNUSED(item);
-
const bool wasGrabbed = ungrabMouse(event);
+ if (!wasGrabbed)
+ handleRelease(item->mapToScene(event->localPos()));
popupItem->setKeepMouseGrab(false);
pressPoint = QPoint();
@@ -651,21 +653,18 @@ bool QQuickDrawer::childMouseEventFilter(QQuickItem *child, QEvent *event)
void QQuickDrawer::mousePressEvent(QMouseEvent *event)
{
Q_D(QQuickDrawer);
- QQuickPopup::mousePressEvent(event);
d->handleMousePressEvent(d->popupItem, event);
}
void QQuickDrawer::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickDrawer);
- QQuickPopup::mouseMoveEvent(event);
d->handleMouseMoveEvent(d->popupItem, event);
}
void QQuickDrawer::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickDrawer);
- QQuickPopup::mouseReleaseEvent(event);
d->handleMouseReleaseEvent(d->popupItem, event);
}
@@ -690,12 +689,10 @@ bool QQuickDrawer::overlayEvent(QQuickItem *item, QEvent *event)
return false;
case QEvent::MouseButtonPress:
- d->tryClose(item, event);
return d->handleMousePressEvent(item, static_cast<QMouseEvent *>(event));
case QEvent::MouseMove:
return d->handleMouseMoveEvent(item, static_cast<QMouseEvent *>(event));
case QEvent::MouseButtonRelease:
- d->tryClose(item, event);
return d->handleMouseReleaseEvent(item, static_cast<QMouseEvent *>(event));
default:
return QQuickPopup::overlayEvent(item, event);