aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickevents_p_p.h
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-07-29 16:05:38 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2016-07-31 21:46:45 +0000
commitb13668d5304c0c0cef116fb3126d772083a71563 (patch)
tree493c7daf18e69b8657248dc0ea5642da5871d0f9 /src/quick/items/qquickevents_p_p.h
parent397588a9f68886608d2d257f70178ffc1b79e6ae (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.h9
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;