diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-26 08:50:13 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-26 13:06:55 +0000 |
commit | aac7d771a6be0ea15c521e271f4b1437fb0b6077 (patch) | |
tree | 66ca44b4f47c3752d282871a7879e64a4cf126af /src/quick/items/qquickevents.cpp | |
parent | 124181973f586a67990c9a68e25a3642623b998a (diff) |
QQuickEventPoint: guard setPointerHandlerGrabber and setItemGrabber
If they get called too often, ensure that m_sceneGrabPos isn't getting
reset each time.
Change-Id: Ia280dca5a2e39b3a641f9a0b76e5a588ebcdc99c
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src/quick/items/qquickevents.cpp')
-rw-r--r-- | src/quick/items/qquickevents.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index d0a32929f1..45e2fd3e73 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -549,10 +549,12 @@ QQuickItem *QQuickEventPoint::itemGrabber() const void QQuickEventPoint::setItemGrabber(QQuickItem *grabber) { - qCDebug(lcPointerHandlerDispatch) << this << grabber; - m_grabber = QPointer<QObject>(grabber); - m_grabberIsHandler = false; - m_sceneGrabPos = m_scenePos; + if (grabber != m_grabber.data()) { + qCDebug(lcPointerHandlerDispatch) << this << grabber; + m_grabber = QPointer<QObject>(grabber); + m_grabberIsHandler = false; + m_sceneGrabPos = m_scenePos; + } } QQuickPointerHandler *QQuickEventPoint::pointerHandlerGrabber() const @@ -562,10 +564,12 @@ QQuickPointerHandler *QQuickEventPoint::pointerHandlerGrabber() const void QQuickEventPoint::setPointerHandlerGrabber(QQuickPointerHandler *grabber) { - qCDebug(lcPointerHandlerDispatch) << this << grabber; - m_grabber = QPointer<QObject>(grabber); - m_grabberIsHandler = true; - m_sceneGrabPos = m_scenePos; + if (grabber != m_grabber.data()) { + qCDebug(lcPointerHandlerDispatch) << this << grabber; + m_grabber = QPointer<QObject>(grabber); + m_grabberIsHandler = true; + m_sceneGrabPos = m_scenePos; + } } void QQuickEventPoint::setAccepted(bool accepted) |