Add QSinglePointEvent::exclusivePointGrabber convenience property

Since a single-point event (such as a QMouseEvent) only carries one
point, it only has one grabber, so we can have a normal Q_PROPERTY.

It's named exclusivePointGrabber to avoid shadowing the
QPointerEvent::[set]exclusiveGrabber functions that take QEventPoint&.

Change-Id: Ie18f1c1849ed057b98f229de7b17b7fc3f3eea36
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
bb10
Shawn Rutledge 2020-10-16 10:12:36 +02:00
parent 6089888d1d
commit 5683c0afda
2 changed files with 23 additions and 0 deletions

View File

@ -963,6 +963,21 @@ bool QSinglePointEvent::isEndEvent() const
return m_button != Qt::NoButton && !m_mouseState.testFlag(m_button);
}
/*!
\property QSinglePointEvent::exclusivePointGrabber
\brief the object that will receive future updates
The exclusive grabber is an object that has chosen to receive all future
update events and the release event containing the same point that this
event carries.
Setting the exclusivePointGrabber property is a convenience equivalent to:
\code
setExclusiveGrabber(points().first(), exclusiveGrabber);
\endcode
*/
/*!
\class QMouseEvent
\ingroup events

View File

@ -233,6 +233,9 @@ protected:
class Q_GUI_EXPORT QSinglePointEvent : public QPointerEvent
{
Q_GADGET
Q_PROPERTY(QObject *exclusivePointGrabber READ exclusivePointGrabber WRITE setExclusivePointGrabber)
public:
QSinglePointEvent(Type type, const QPointingDevice *dev, const QPointF &localPos,
const QPointF &scenePos, const QPointF &globalPos,
@ -253,6 +256,11 @@ public:
bool isUpdateEvent() const override;
bool isEndEvent() const override;
QObject *exclusivePointGrabber() const
{ return QPointerEvent::exclusiveGrabber(points().first()); }
void setExclusivePointGrabber(QObject *exclusiveGrabber)
{ QPointerEvent::setExclusiveGrabber(points().first(), exclusiveGrabber); }
protected:
QSinglePointEvent(Type type, const QPointingDevice *dev, const QEventPoint &point,
Qt::MouseButton button, Qt::MouseButtons buttons,