From 7b9b44d8f45c57df1393960807497bd7286d3471 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 21 Apr 2020 08:11:22 +0200 Subject: 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 --- src/quick/items/qquickevents.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/quick') 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(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(m_event); return (me->type() == QEvent::MouseButtonDblClick); } bool QQuickPointerMouseEvent::isUpdateEvent() const { + if (!m_event) + return false; auto me = static_cast(m_event); return me->type() == QEvent::MouseMove; } bool QQuickPointerMouseEvent::isReleaseEvent() const { + if (!m_event) + return false; auto me = static_cast(m_event); return me && me->type() == QEvent::MouseButtonRelease; } -- cgit v1.2.3