diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2016-07-29 16:05:38 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2016-07-31 21:46:45 +0000 |
commit | b13668d5304c0c0cef116fb3126d772083a71563 (patch) | |
tree | 493c7daf18e69b8657248dc0ea5642da5871d0f9 /src/quick/items/qquickevents_p_p.h | |
parent | 397588a9f68886608d2d257f70178ffc1b79e6ae (diff) |
Make QQuickEventPoint::grabber a QPointer internally
Accessing the grabbers was always dangerous. The present code only works
because it iterates over all current QQuickItems and doesn't even try to
deal with things being deleted inbetween.
Change-Id: Id85791dcbd87ec8c5027f9c1376cb39e5779cabe
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'src/quick/items/qquickevents_p_p.h')
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index b944a3d06d..571c257a26 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -55,13 +55,14 @@ #include <qqml.h> #include <QtCore/qobject.h> +#include <QtCore/qpointer.h> #include <QtGui/qvector2d.h> #include <QtGui/qevent.h> #include <QtGui/qkeysequence.h> +#include <QtQuick/qquickitem.h> QT_BEGIN_NAMESPACE -class QQuickItem; class QQuickPointerDevice; class QQuickPointerEvent; class QQuickPointerMouseEvent; @@ -281,13 +282,13 @@ public: qreal timeHeld() const { return (m_timestamp - m_pressTimestamp) / 1000.0; } bool isAccepted() const { return m_accept; } void setAccepted(bool accepted = true) { m_accept = accepted; } - QQuickItem *grabber() const { return m_grabber; } - void setGrabber(QQuickItem *grabber) { m_grabber = grabber; } + QQuickItem *grabber() const; + void setGrabber(QQuickItem *grabber); private: QPointF m_scenePos; quint64 m_pointId; - QQuickItem *m_grabber; + QPointer<QQuickItem> m_grabber; ulong m_timestamp; ulong m_pressTimestamp; Qt::TouchPointState m_state; |