diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 2568be659ed..922c9787a08 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -2805,7 +2805,7 @@ void QWindowPrivate::maybeSynthesizeContextMenuEvent(QMouseEvent *event) qCDebug(lcPopup) << "synthesized after" << (event->isAccepted() ? "ACCEPTED (legacy behavior)" : "ignored") << event->type() << ":" << &e; - QGuiApplication::sendEvent(q_func(), &e); + QCoreApplication::forwardEvent(q_func(), &e, event); } #endif } diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 16136b67a34..b521725de30 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -14024,9 +14024,13 @@ void tst_QWidget::contextMenuTrigger() { public: int events = 0; + bool spontaneous = false; protected: - void contextMenuEvent(QContextMenuEvent *) override { ++events; } + void contextMenuEvent(QContextMenuEvent *ev) override { + ++events; + spontaneous = ev->spontaneous(); + } }; const Qt::ContextMenuTrigger wasTrigger = QGuiApplication::styleHints()->contextMenuTrigger(); @@ -14043,6 +14047,7 @@ void tst_QWidget::contextMenuTrigger() QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Press); QTest::mousePress(window, Qt::RightButton); QCOMPARE(widget.events, 1); + QCOMPARE(widget.spontaneous, true); // QTBUG-132873: Squish expects it QTest::mouseRelease(window, Qt::RightButton); QCOMPARE(widget.events, 1); QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Release); @@ -14050,6 +14055,7 @@ void tst_QWidget::contextMenuTrigger() QCOMPARE(widget.events, 1); QTest::mouseRelease(window, Qt::RightButton); QCOMPARE(widget.events, 2); + QCOMPARE(widget.spontaneous, true); } #endif