QWindowPrivate::maybeSynthesizeContextMenuEvent: preserve spontaneity
Call QCoreApplication::forwardEvent() rather than sendEvent() to ensure the QContextMenuEvent is spontaneous if the mouse event is. Fixes: QTBUG-132873 Change-Id: I6198c2105210d2841f43ef81a9be0f917272846f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 97605760aec7bfe48a8642ba8677204efd9c46a5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
15a1b718e6
commit
648dede46c
@ -2805,7 +2805,7 @@ void QWindowPrivate::maybeSynthesizeContextMenuEvent(QMouseEvent *event)
|
|||||||
qCDebug(lcPopup) << "synthesized after"
|
qCDebug(lcPopup) << "synthesized after"
|
||||||
<< (event->isAccepted() ? "ACCEPTED (legacy behavior)" : "ignored")
|
<< (event->isAccepted() ? "ACCEPTED (legacy behavior)" : "ignored")
|
||||||
<< event->type() << ":" << &e;
|
<< event->type() << ":" << &e;
|
||||||
QGuiApplication::sendEvent(q_func(), &e);
|
QCoreApplication::forwardEvent(q_func(), &e, event);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -14024,9 +14024,13 @@ void tst_QWidget::contextMenuTrigger()
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int events = 0;
|
int events = 0;
|
||||||
|
bool spontaneous = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void contextMenuEvent(QContextMenuEvent *) override { ++events; }
|
void contextMenuEvent(QContextMenuEvent *ev) override {
|
||||||
|
++events;
|
||||||
|
spontaneous = ev->spontaneous();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const Qt::ContextMenuTrigger wasTrigger = QGuiApplication::styleHints()->contextMenuTrigger();
|
const Qt::ContextMenuTrigger wasTrigger = QGuiApplication::styleHints()->contextMenuTrigger();
|
||||||
@ -14043,6 +14047,7 @@ void tst_QWidget::contextMenuTrigger()
|
|||||||
QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Press);
|
QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Press);
|
||||||
QTest::mousePress(window, Qt::RightButton);
|
QTest::mousePress(window, Qt::RightButton);
|
||||||
QCOMPARE(widget.events, 1);
|
QCOMPARE(widget.events, 1);
|
||||||
|
QCOMPARE(widget.spontaneous, true); // QTBUG-132873: Squish expects it
|
||||||
QTest::mouseRelease(window, Qt::RightButton);
|
QTest::mouseRelease(window, Qt::RightButton);
|
||||||
QCOMPARE(widget.events, 1);
|
QCOMPARE(widget.events, 1);
|
||||||
QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Release);
|
QGuiApplication::styleHints()->setContextMenuTrigger(Qt::ContextMenuTrigger::Release);
|
||||||
@ -14050,6 +14055,7 @@ void tst_QWidget::contextMenuTrigger()
|
|||||||
QCOMPARE(widget.events, 1);
|
QCOMPARE(widget.events, 1);
|
||||||
QTest::mouseRelease(window, Qt::RightButton);
|
QTest::mouseRelease(window, Qt::RightButton);
|
||||||
QCOMPARE(widget.events, 2);
|
QCOMPARE(widget.events, 2);
|
||||||
|
QCOMPARE(widget.spontaneous, true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user