26#include <lomiri/shell/application/MirMousePointerInterface.h>
28class MousePointer :
public MirMousePointerInterface {
30 Q_PROPERTY(QQuickItem* confiningItem READ confiningItem WRITE setConfiningItem NOTIFY confiningItemChanged)
31 Q_PROPERTY(
int topBoundaryOffset READ topBoundaryOffset WRITE setTopBoundaryOffset NOTIFY topBoundaryOffsetChanged)
33 MousePointer(QQuickItem *parent =
nullptr);
36 void setCursorName(
const QString &qtCursorName)
override;
37 QString cursorName()
const override {
return m_cursorName; }
39 void setThemeName(
const QString &themeName)
override;
40 QString themeName()
const override {
return m_themeName; }
42 void moveTo(
const QPoint& position)
override;
44 void setCustomCursor(
const QCursor &)
override;
46 QQuickItem* confiningItem()
const;
47 void setConfiningItem(QQuickItem*);
49 int topBoundaryOffset()
const;
50 void setTopBoundaryOffset(
int topBoundaryOffset);
52 QScreen* screen()
const {
return m_registeredScreen; }
55 void pushedLeftBoundary(qreal amount, Qt::MouseButtons buttons);
56 void pushedRightBoundary(qreal amount, Qt::MouseButtons buttons);
57 void pushedTopBoundary(qreal amount, Qt::MouseButtons buttons);
58 void pushedTopLeftCorner(qreal amount, Qt::MouseButtons buttons);
59 void pushedTopRightCorner(qreal amount, Qt::MouseButtons buttons);
60 void pushedBottomLeftCorner(qreal amount, Qt::MouseButtons buttons);
61 void pushedBottomRightCorner(qreal amount, Qt::MouseButtons buttons);
64 void confiningItemChanged();
66 void topBoundaryOffsetChanged(
int topBoundaryOffset);
69 void itemChange(ItemChange change,
const ItemChangeData &value)
override;
72 void registerScreen(QScreen *screen);
75 void registerWindow(QWindow *window);
76 void applyItemConfinement(qreal &newX, qreal &newY);
78 QPointer<QWindow> m_registeredWindow;
79 QPointer<QScreen> m_registeredScreen;
85 QPointF m_accumulatedMovement;
87 QPointer<QQuickItem> m_confiningItem;
89 int m_topBoundaryOffset{0};
90 bool m_pushing{
false};