summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-01-11 15:50:51 +0200
committerJørgen Lind <jorgen.lind@nokia.com>2012-01-11 20:37:56 +0100
commit3ff93ce7368ca577b775cbca0668fedb9373a04e (patch)
tree5f9c82f6309fe5bbc47ec5b003779a23d6c335a8 /examples
parent8894f58e01b51e9b2072973edbe043ebe62858b4 (diff)
downloadqtwayland-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.cpp15
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;
}