40 Q_INTERFACES(QQmlParserStatus)
42 Q_PROPERTY(
bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
43 Q_PROPERTY(
bool active READ active NOTIFY activeChanged)
44 Q_PROPERTY(QQuickItem * target READ target WRITE setTarget NOTIFY targetChanged)
45 Q_PROPERTY(QQuickItem * parent READ parentItem WRITE setParentItem NOTIFY parentChanged)
46 Q_PROPERTY(GrabPermissions grabPermissions READ grabPermissions WRITE setGrabPermissions NOTIFY grabPermissionChanged)
47 Q_PROPERTY(qreal margin READ margin WRITE setMargin NOTIFY marginChanged)
48 Q_PROPERTY(
int dragThreshold READ dragThreshold WRITE setDragThreshold RESET resetDragThreshold NOTIFY dragThresholdChanged REVISION(2, 15))
50 Q_PROPERTY(Qt::CursorShape cursorShape READ cursorShape WRITE setCursorShape RESET resetCursorShape NOTIFY cursorShapeChanged REVISION(2, 15))
53 Q_CLASSINFO(
"ParentProperty",
"parent")
54 QML_NAMED_ELEMENT(PointerHandler)
55 QML_UNCREATABLE(
"PointerHandler is an abstract base class.")
56 QML_ADDED_IN_VERSION(2, 12)
59 explicit QQuickPointerHandler(QQuickItem *parent =
nullptr);
60 ~QQuickPointerHandler();
63 TakeOverForbidden = 0x0,
64 CanTakeOverFromHandlersOfSameType = 0x01,
65 CanTakeOverFromHandlersOfDifferentType= 0x02,
66 CanTakeOverFromItems = 0x04,
67 CanTakeOverFromAnything = 0x0F,
68 ApprovesTakeOverByHandlersOfSameType = 0x10,
69 ApprovesTakeOverByHandlersOfDifferentType= 0x20,
70 ApprovesTakeOverByItems = 0x40,
71 ApprovesCancellation = 0x80,
72 ApprovesTakeOverByAnything = 0xF0
74 Q_DECLARE_FLAGS(GrabPermissions, GrabPermission)
75 Q_FLAG(GrabPermissions)
79 void setEnabled(
bool enabled);
83 QQuickItem *target()
const;
84 void setTarget(QQuickItem *target);
86 QQuickItem * parentItem()
const;
87 void setParentItem(QQuickItem *p);
89 void handlePointerEvent(QPointerEvent *event);
91 GrabPermissions grabPermissions()
const;
92 void setGrabPermissions(GrabPermissions grabPermissions);
95 void setMargin(qreal pointDistanceThreshold);
97 int dragThreshold()
const;
98 void setDragThreshold(
int t);
99 void resetDragThreshold();
102 Qt::CursorShape cursorShape()
const;
103 void setCursorShape(Qt::CursorShape shape);
104 void resetCursorShape();
105 bool isCursorShapeExplicitlySet()
const;
109 void enabledChanged();
110 void activeChanged();
111 void targetChanged();
112 void marginChanged();
113 Q_REVISION(2, 15)
void dragThresholdChanged();
114 void grabChanged(QPointingDevice::GrabTransition transition, QEventPoint point);
115 void grabPermissionChanged();
116 void canceled(QEventPoint point);
118 Q_REVISION(2, 15)
void cursorShapeChanged();
120 Q_REVISION(6, 3)
void parentChanged();
123 QQuickPointerHandler(QQuickPointerHandlerPrivate &dd, QQuickItem *parent);
125 void classBegin() override;
126 void componentComplete() override;
127 bool event(QEvent *) override;
129 QPointerEvent *currentEvent();
130 virtual bool wantsPointerEvent(QPointerEvent *event);
131 virtual bool wantsEventPoint(
const QPointerEvent *event,
const QEventPoint &point);
132 virtual void handlePointerEventImpl(QPointerEvent *event);
133 void setActive(
bool active);
134 virtual void onTargetChanged(QQuickItem *oldTarget) { Q_UNUSED(oldTarget); }
135 virtual void onActiveChanged() { }
136 virtual void onGrabChanged(QQuickPointerHandler *grabber, QPointingDevice::GrabTransition transition,
137 QPointerEvent *event, QEventPoint &point);
138 virtual bool canGrab(QPointerEvent *event,
const QEventPoint &point);
139 virtual bool approveGrabTransition(QPointerEvent *event,
const QEventPoint &point, QObject *proposedGrabber);
140 void setPassiveGrab(QPointerEvent *event,
const QEventPoint &point,
bool grab =
true);
141 bool setExclusiveGrab(QPointerEvent *ev,
const QEventPoint &point,
bool grab =
true);
142 void cancelAllGrabs(QPointerEvent *event, QEventPoint &point);
143 QPointF eventPos(
const QEventPoint &point)
const;
144 bool parentContains(
const QEventPoint &point)
const;
145 bool parentContains(
const QPointF &scenePosition)
const;
147 friend class QQuickDeliveryAgentPrivate;
148 friend class QQuickItemPrivate;
149 friend class QQuickMenuPrivate;
150 friend class QQuickWindowPrivate;
152 Q_DECLARE_PRIVATE(QQuickPointerHandler)