aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2016-07-01 17:36:29 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2016-07-11 13:46:11 +0000
commite352fd967a4cdc9ab2ed8633733d59d64cf8134a (patch)
treeb0343dcb17bc605f244aabd927a45ccb9a03a7d8 /src/quick/items
parentc3105b42aa286421fb7998a4b013f53ca5624a5f (diff)
Move implementation of grabTouchPoints to QQuickWindowPrivate
QQuickItem should not be directly manipulating QQuickWindowPrivate's variables. Change-Id: I5ff11550351398247dacf14447fb6c897b2dd0aa Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'src/quick/items')
-rw-r--r--src/quick/items/qquickitem.cpp22
-rw-r--r--src/quick/items/qquickwindow.cpp25
-rw-r--r--src/quick/items/qquickwindow_p.h1
3 files changed, 27 insertions, 21 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 56426fbe37..79ddd449f5 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -7219,27 +7219,7 @@ void QQuickItem::grabTouchPoints(const QVector<int> &ids)
if (!d->window)
return;
QQuickWindowPrivate *windowPriv = QQuickWindowPrivate::get(d->window);
-
- QSet<QQuickItem*> ungrab;
- for (int i = 0; i < ids.count(); ++i) {
- QQuickItem *oldGrabber = windowPriv->itemForTouchPointId.value(ids.at(i));
- if (oldGrabber == this)
- return;
-
- windowPriv->itemForTouchPointId[ids.at(i)] = this;
- if (oldGrabber)
- ungrab.insert(oldGrabber);
-
- QQuickItem *mouseGrabber = windowPriv->mouseGrabberItem;
- if (windowPriv->touchMouseId == ids.at(i) && mouseGrabber && mouseGrabber != this) {
- qCDebug(DBG_MOUSE_TARGET) << "grabTouchPoints: grabber" << windowPriv->mouseGrabberItem << "-> null";
- windowPriv->mouseGrabberItem = 0;
- QEvent ev(QEvent::UngrabMouse);
- d->window->sendEvent(mouseGrabber, &ev);
- }
- }
- foreach (QQuickItem *oldGrabber, ungrab)
- oldGrabber->touchUngrabEvent();
+ windowPriv->grabTouchPoints(this, ids);
}
/*!
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index aead9a71b5..7125206f16 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -766,6 +766,31 @@ void QQuickWindowPrivate::setMouseGrabber(QQuickItem *grabber)
}
}
+void QQuickWindowPrivate::grabTouchPoints(QQuickItem *grabber, const QVector<int> &ids)
+{
+ Q_Q(QQuickWindow);
+ QSet<QQuickItem*> ungrab;
+ for (int i = 0; i < ids.count(); ++i) {
+ QQuickItem *oldGrabber = itemForTouchPointId.value(ids.at(i));
+ if (oldGrabber == grabber)
+ return;
+
+ itemForTouchPointId[ids.at(i)] = grabber;
+ if (oldGrabber)
+ ungrab.insert(oldGrabber);
+
+ QQuickItem *originalMouseGrabberItem = mouseGrabberItem;
+ if (touchMouseId == ids.at(i) && mouseGrabberItem && mouseGrabberItem != grabber) {
+ qCDebug(DBG_MOUSE_TARGET) << "grabTouchPoints: grabber" << mouseGrabberItem << "-> null";
+ mouseGrabberItem = 0;
+ QEvent ev(QEvent::UngrabMouse);
+ q->sendEvent(originalMouseGrabberItem, &ev);
+ }
+ }
+ foreach (QQuickItem *oldGrabber, ungrab)
+ oldGrabber->touchUngrabEvent();
+}
+
void QQuickWindowPrivate::removeGrabber(QQuickItem *grabber, bool mouse, bool touch)
{
Q_Q(QQuickWindow);
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h
index 1b4b87e001..31fa079658 100644
--- a/src/quick/items/qquickwindow_p.h
+++ b/src/quick/items/qquickwindow_p.h
@@ -143,6 +143,7 @@ public:
bool translateTouchToMouse(QQuickItem *item, QTouchEvent *event);
void translateTouchEvent(QTouchEvent *touchEvent);
void setMouseGrabber(QQuickItem *grabber);
+ void grabTouchPoints(QQuickItem *grabber, const QVector<int> &ids);
void removeGrabber(QQuickItem *grabber, bool mouse = true, bool touch = true);
static void transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform);
static QMouseEvent *cloneMouseEvent(QMouseEvent *event, QPointF *transformedLocalPos = 0);