diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-12-22 11:08:53 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-12-23 01:12:58 +0100 |
commit | 3045196fba44c210121274c6b5c2aa59fc1caf5c (patch) | |
tree | 2978b83230cac4daa448fda7628866f2adc2768f | |
parent | ad62b5b445e39ee390c102c0d506de8787994248 (diff) | |
download | qtbase-3045196fba44c210121274c6b5c2aa59fc1caf5c.tar.gz |
Deliver context menu event with correct coordinates to widgets in popups
If a popup is open, Qt delivers events to the popup child under the
mouse, so we need to correctly translate the local position of the
context menu event to that child's coordate system.
This is already done correctly for regular mouse events, so use the same
logic here.
Fixes: QTBUG-99371
Change-Id: Ief24c755e76d4d1aa2304b06662ed26ae309f684
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 0462d24dcd851222d4ac73e7af38d785c6a32cfd)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 4ddbcc5a23..41c5f095d3 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -634,7 +634,8 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) receiver = qt_button_down; else if(popupChild) receiver = popupChild; - QContextMenuEvent e(QContextMenuEvent::Mouse, mapped, event->globalPos(), event->modifiers()); + const QPoint localPos = receiver->mapFromGlobal(event->globalPos()); + QContextMenuEvent e(QContextMenuEvent::Mouse, localPos, event->globalPos(), event->modifiers()); QApplication::forwardEvent(receiver, &e, event); } #else |