summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fbconvenience
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-03-10 15:21:48 +0100
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-03-14 09:24:51 +0000
commitdc6d353a299d3eeaf57055486db12548198114a7 (patch)
tree1c72a7c1d6a3fd03eec11c87bb02bdf5533d49dc /src/platformsupport/fbconvenience
parent3bf655e5960c8f0ac4cb8b99a671886b824c7191 (diff)
linuxfb: Add support for QCursor::setPos()
Task-number: QTBUG-44856 Change-Id: I102137b3ccdfbea23eb470c38a47c807572d232d Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src/platformsupport/fbconvenience')
-rw-r--r--src/platformsupport/fbconvenience/qfbcursor.cpp26
-rw-r--r--src/platformsupport/fbconvenience/qfbcursor_p.h7
2 files changed, 24 insertions, 9 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)
diff --git a/src/platformsupport/fbconvenience/qfbcursor_p.h b/src/platformsupport/fbconvenience/qfbcursor_p.h
index fe3aeada4c..9c5506b455 100644
--- a/src/platformsupport/fbconvenience/qfbcursor_p.h
+++ b/src/platformsupport/fbconvenience/qfbcursor_p.h
@@ -81,9 +81,11 @@ public:
virtual QRect drawCursor(QPainter &painter);
// input methods
- virtual void pointerEvent(const QMouseEvent &event) Q_DECL_OVERRIDE;
+ void pointerEvent(const QMouseEvent &event) Q_DECL_OVERRIDE;
+ QPoint pos() const Q_DECL_OVERRIDE;
+ void setPos(const QPoint &pos) Q_DECL_OVERRIDE;
#ifndef QT_NO_CURSOR
- virtual void changeCursor(QCursor *widgetCursor, QWindow *window) Q_DECL_OVERRIDE;
+ void changeCursor(QCursor *widgetCursor, QWindow *window) Q_DECL_OVERRIDE;
#endif
virtual void setDirty();
@@ -107,6 +109,7 @@ private:
bool mOnScreen;
QPlatformCursorImage *mGraphic;
QFbCursorDeviceListener *mDeviceListener;
+ QPoint m_pos;
};
QT_END_NAMESPACE