aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-04-21 08:11:22 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-04-24 10:49:34 +0200
commit7b9b44d8f45c57df1393960807497bd7286d3471 (patch)
treecd81aae90c9c6f2540003eed3de2f3247e803924
parentec707b03c62efa8e50aa17f84d2f8d175269c96d (diff)
Fix crashes when dragging
In QQuickWindowPrivate::sendFilteredPointerEventImpl(), it appears that the mouse event of the QQuickPointerMouseEvent can be reset in childMouseEventFilter(), causing a crash in QQuickPointerMouseEvent::isPressEvent(). Add checks QQuickPointerMouseEvent to fix this. Fixes: QTBUG-83411 Change-Id: I45f7406de4363974fc6adcac2999cdf55a0c84a7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--src/quick/items/qquickevents.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp
index eddd15c6da..950afaed52 100644
--- a/src/quick/items/qquickevents.cpp
+++ b/src/quick/items/qquickevents.cpp
@@ -1744,6 +1744,8 @@ bool QQuickSinglePointEvent::hasExclusiveGrabber(const QQuickPointerHandler *han
bool QQuickPointerMouseEvent::isPressEvent() const
{
+ if (!m_event)
+ return false;
auto me = static_cast<QMouseEvent*>(m_event);
return ((me->type() == QEvent::MouseButtonPress || me->type() == QEvent::MouseButtonDblClick) &&
(me->buttons() & me->button()) == me->buttons());
@@ -1751,18 +1753,24 @@ bool QQuickPointerMouseEvent::isPressEvent() const
bool QQuickPointerMouseEvent::isDoubleClickEvent() const
{
+ if (!m_event)
+ return false;
auto me = static_cast<QMouseEvent*>(m_event);
return (me->type() == QEvent::MouseButtonDblClick);
}
bool QQuickPointerMouseEvent::isUpdateEvent() const
{
+ if (!m_event)
+ return false;
auto me = static_cast<QMouseEvent*>(m_event);
return me->type() == QEvent::MouseMove;
}
bool QQuickPointerMouseEvent::isReleaseEvent() const
{
+ if (!m_event)
+ return false;
auto me = static_cast<QMouseEvent*>(m_event);
return me && me->type() == QEvent::MouseButtonRelease;
}