diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-01-11 15:50:51 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2012-01-11 20:37:56 +0100 |
commit | 3ff93ce7368ca577b775cbca0668fedb9373a04e (patch) | |
tree | 5f9c82f6309fe5bbc47ec5b003779a23d6c335a8 /examples | |
parent | 8894f58e01b51e9b2072973edbe043ebe62858b4 (diff) | |
download | qtwayland-3ff93ce7368ca577b775cbca0668fedb9373a04e.tar.gz |
Don't crash when sending touch events.
Change-Id: I62bf4913338e6daa3245400b0e2c7004907cb29a
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/qwindow-compositor/qwindowcompositor.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/examples/qwindow-compositor/qwindowcompositor.cpp b/examples/qwindow-compositor/qwindowcompositor.cpp index eff7541c..d0f14e94 100644 --- a/examples/qwindow-compositor/qwindowcompositor.cpp +++ b/examples/qwindow-compositor/qwindowcompositor.cpp @@ -268,16 +268,17 @@ bool QWindowCompositor::eventFilter(QObject *obj, QEvent *event) case QEvent::TouchUpdate: case QEvent::TouchEnd: { - QSet<WaylandSurface *> targets; + WaylandSurface *targetSurface = 0; QTouchEvent *te = static_cast<QTouchEvent *>(event); QList<QTouchEvent::TouchPoint> points = te->touchPoints(); - for (int i = 0; i < points.count(); ++i) { - const QTouchEvent::TouchPoint &tp(points.at(i)); - WaylandSurface *targetSurface = surfaceAt(tp.pos().toPoint()); - if (targetSurface) - targets.insert(targetSurface); + QPoint pointPos; + if (!points.isEmpty()) { + pointPos = points.at(0).pos().toPoint(); + targetSurface = surfaceAt(pointPos); } - foreach (WaylandSurface *surface, targets) + if (targetSurface && targetSurface != input->mouseFocus()) + input->setMouseFocus(targetSurface, pointPos, pointPos); + if (input->mouseFocus()) input->sendFullTouchEvent(te); break; } |