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>
This commit is contained in:
parent
7d72516b52
commit
00b13e6388
@ -438,7 +438,14 @@ void QQnxScreenEventHandler::handleTouchEvent(screen_event_t event, int qnxType)
|
|||||||
m_touchPoints[touchId].normalPosition =
|
m_touchPoints[touchId].normalPosition =
|
||||||
QPointF(static_cast<qreal>(pos[0]) / screenSize.width(),
|
QPointF(static_cast<qreal>(pos[0]) / screenSize.width(),
|
||||||
static_cast<qreal>(pos[1]) / screenSize.height());
|
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
|
// determine event type and update state of current touch point
|
||||||
QEvent::Type type = QEvent::None;
|
QEvent::Type type = QEvent::None;
|
||||||
@ -473,8 +480,8 @@ void QQnxScreenEventHandler::handleTouchEvent(screen_event_t event, int qnxType)
|
|||||||
// inject event into Qt
|
// inject event into Qt
|
||||||
QWindowSystemInterface::handleTouchEvent(w, m_touchDevice, pointList);
|
QWindowSystemInterface::handleTouchEvent(w, m_touchDevice, pointList);
|
||||||
qScreenEventDebug() << Q_FUNC_INFO << "Qt touch, w =" << w
|
qScreenEventDebug() << Q_FUNC_INFO << "Qt touch, w =" << w
|
||||||
<< ", p=(" << pos[0] << "," << pos[1]
|
<< ", p=" << m_touchPoints[touchId].area.topLeft()
|
||||||
<< "), t=" << type;
|
<< ", t=" << type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user