diff options
author | Andy Shaw <andy.shaw@qt.io> | 2021-01-13 17:40:18 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2021-04-29 06:32:10 +0200 |
commit | a014300898bd3bd574ef19bba7123d4b5a07789b (patch) | |
tree | 48a883ef3a46ed94bcca865052710a5db30a8b60 /src/plugins/platforms | |
parent | 0e4cc15da330fb25b913fbc8089e60f80a08f49f (diff) |
macOS: Don't override action set during drop handling
When the drop has been handled, the target might have accepted a specific
action by calling QDropEvent::setDropAction. Don't override that with
the operation received by the OS if the drag'n'drop operation takes place
within the same application. If the operation comes from outside, we have
no choice but to trust the OS.
This way the drag-site will get the action accepted by the drop-site when
QDrag::drag returns.
Fixes: QTBUG-77427
Pick-to: 6.1 6.0 5.15
Change-Id: I0e4c86adeeea66b345966a03a3251fa62263b3e8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview_dragging.mm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview_dragging.mm b/src/plugins/platforms/cocoa/qnsview_dragging.mm index 945217e928..6ea96ac956 100644 --- a/src/plugins/platforms/cocoa/qnsview_dragging.mm +++ b/src/plugins/platforms/cocoa/qnsview_dragging.mm @@ -296,7 +296,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); Q_ASSERT(nativeDrag); nativeDrag->exitDragLoop(); - nativeDrag->setAcceptedAction(qt_mac_mapNSDragOperation(operation)); + // for internal drag'n'drop, don't override the action the drop event accepted + if (!nativeDrag->currentDrag()) + nativeDrag->setAcceptedAction(qt_mac_mapNSDragOperation(operation)); // Qt starts drag-and-drop on a mouse button press event. Cococa in // this case won't send the matching release event, so we have to |