diff options
Diffstat (limited to 'src/platformsupport/fbconvenience/qfbcursor.cpp')
-rw-r--r-- | src/platformsupport/fbconvenience/qfbcursor.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp index 963d315998..c727d67e72 100644 --- a/src/platformsupport/fbconvenience/qfbcursor.cpp +++ b/src/platformsupport/fbconvenience/qfbcursor.cpp @@ -81,22 +81,34 @@ QRect QFbCursor::getCurrentRect() { QRect rect = mGraphic->image()->rect().translated(-mGraphic->hotspot().x(), -mGraphic->hotspot().y()); - rect.translate(QCursor::pos()); + rect.translate(m_pos); QPoint mScreenOffset = mScreen->geometry().topLeft(); rect.translate(-mScreenOffset); // global to local translation return rect; } +QPoint QFbCursor::pos() const +{ + return m_pos; +} -void QFbCursor::pointerEvent(const QMouseEvent & e) +void QFbCursor::setPos(const QPoint &pos) { - Q_UNUSED(e); - QPoint mScreenOffset = mScreen->geometry().topLeft(); + QGuiApplicationPrivate::inputDeviceManager()->setCursorPos(pos); + m_pos = pos; mCurrentRect = getCurrentRect(); - // global to local translation - if (mOnScreen || mScreen->geometry().intersects(mCurrentRect.translated(mScreenOffset))) { + if (mOnScreen || mScreen->geometry().intersects(mCurrentRect.translated(mScreen->geometry().topLeft()))) + setDirty(); +} + +void QFbCursor::pointerEvent(const QMouseEvent &e) +{ + if (e.type() != QEvent::MouseMove) + return; + m_pos = e.screenPos().toPoint(); + mCurrentRect = getCurrentRect(); + if (mOnScreen || mScreen->geometry().intersects(mCurrentRect.translated(mScreen->geometry().topLeft()))) setDirty(); - } } QRect QFbCursor::drawCursor(QPainter & painter) |