diff --git a/src/gui/kernel/qevent_p.h b/src/gui/kernel/qevent_p.h index 7c9974db7f8..a776b957a56 100644 --- a/src/gui/kernel/qevent_p.h +++ b/src/gui/kernel/qevent_p.h @@ -84,7 +84,8 @@ static_assert(sizeof(QMutableTouchEvent) == sizeof(QTouchEvent)); class Q_GUI_EXPORT QMutableSinglePointEvent : public QSinglePointEvent { public: - QMutableSinglePointEvent(Type type, const QPointingDevice *device, const QEventPoint &point, + QMutableSinglePointEvent(const QSinglePointEvent &other) : QSinglePointEvent(other) {} + QMutableSinglePointEvent(Type type = QEvent::None, const QPointingDevice *device = nullptr, const QEventPoint &point = QEventPoint(), Qt::MouseButton button = Qt::NoButton, Qt::MouseButtons buttons = Qt::NoButton, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::MouseEventSource source = Qt::MouseEventSynthesizedByQt) : diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index 7c7c0949624..847d5fd45c9 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -340,7 +340,6 @@ QGraphicsViewPrivate::QGraphicsViewPrivate() hasUpdateClip(false), mousePressButton(Qt::NoButton), leftIndent(0), topIndent(0), - lastMouseEvent(QEvent::None, QPointF(), QPointF(), QPointF(), Qt::NoButton, { }, { }), alignment(Qt::AlignCenter), transformationAnchor(QGraphicsView::AnchorViewCenter), resizeAnchor(QGraphicsView::NoAnchor), viewportUpdateMode(QGraphicsView::MinimalViewportUpdate), @@ -628,7 +627,8 @@ void QGraphicsViewPrivate::replayLastMouseEvent() { if (!useLastMouseEvent || !scene) return; - mouseMoveEventHandler(&lastMouseEvent); + QSinglePointEvent *spe = static_cast(&lastMouseEvent); + mouseMoveEventHandler(static_cast(spe)); } /*! @@ -637,8 +637,7 @@ void QGraphicsViewPrivate::replayLastMouseEvent() void QGraphicsViewPrivate::storeMouseEvent(QMouseEvent *event) { useLastMouseEvent = true; - lastMouseEvent = QMouseEvent(QEvent::MouseMove, event->position(), event->scenePosition(), event->globalPosition(), - event->button(), event->buttons(), event->modifiers()); + lastMouseEvent = *event; } void QGraphicsViewPrivate::mouseMoveEventHandler(QMouseEvent *event) diff --git a/src/widgets/graphicsview/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h index 8a8f6bf880f..0b137e91dc9 100644 --- a/src/widgets/graphicsview/qgraphicsview_p.h +++ b/src/widgets/graphicsview/qgraphicsview_p.h @@ -54,7 +54,7 @@ #include #include "qgraphicsview.h" -#include +#include #include #include "qgraphicssceneevent.h" #include @@ -123,7 +123,7 @@ public: qreal topIndent; // Replaying mouse events - QMouseEvent lastMouseEvent; + QMutableSinglePointEvent lastMouseEvent; void replayLastMouseEvent(); void storeMouseEvent(QMouseEvent *event); void mouseMoveEventHandler(QMouseEvent *event);