diff options
author | Bernd Weimer <bweimer@blackberry.com> | 2013-11-13 17:24:21 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-15 06:37:29 +0100 |
commit | 00b13e63888dad5fe9d5e07426ea34aa60e8f709 (patch) | |
tree | 1b4feeba58b06b0a2061737f2164b3b9b88551ff /src | |
parent | 7d72516b52b20b0782d972224a55a43e74b8ae5a (diff) |
QNX: Fixed touch event positions
Touch positions reported by libscreen have to be adjusted relative to
the window position to be properly interpreted by Qt.
Task-number: QTBUG-34812
Change-Id: I68744dc9da95fb1d0d1704d12154fb24c148fe03
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp index 9db62865bb..6f06797393 100644 --- a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp @@ -438,7 +438,14 @@ void QQnxScreenEventHandler::handleTouchEvent(screen_event_t event, int qnxType) m_touchPoints[touchId].normalPosition = QPointF(static_cast<qreal>(pos[0]) / screenSize.width(), static_cast<qreal>(pos[1]) / screenSize.height()); - m_touchPoints[touchId].area = QRectF( pos[0], pos[1], 0.0, 0.0 ); + + m_touchPoints[touchId].area = QRectF(w->geometry().left() + windowPos[0], + w->geometry().top() + windowPos[1], 0.0, 0.0); + QWindow *parent = w->parent(); + while (parent) { + m_touchPoints[touchId].area.translate(parent->geometry().topLeft()); + parent = parent->parent(); + } // determine event type and update state of current touch point QEvent::Type type = QEvent::None; @@ -473,8 +480,8 @@ void QQnxScreenEventHandler::handleTouchEvent(screen_event_t event, int qnxType) // inject event into Qt QWindowSystemInterface::handleTouchEvent(w, m_touchDevice, pointList); qScreenEventDebug() << Q_FUNC_INFO << "Qt touch, w =" << w - << ", p=(" << pos[0] << "," << pos[1] - << "), t=" << type; + << ", p=" << m_touchPoints[touchId].area.topLeft() + << ", t=" << type; } } } |