From da951c9dbf091b15e76fa63055a299e29a9001ad Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Fri, 19 Aug 2022 15:08:01 +0200 Subject: QCocoaDrag: don't add pasteboard items with non-absolute URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AppKit rejects them and we end up with inconsistent number of pasteboard items and drag images: "NSURLs written to the pasteboard via NSPasteboardWriting must be absolute URLs." "There are 1 items on the pasteboard, but 2 drag images." Fixes: QTBUG-105711 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I7b1bc99f6e0b2b304f92f69125fb6af4ab5e303f Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qcocoadrag.mm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/plugins/platforms/cocoa') diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index 50f094716f..b6c2e15ee2 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -184,6 +184,12 @@ bool QCocoaDrag::maybeDragMultipleItems() // contains a combined picture for all urls we drag. auto imageOrNil = dragImage; for (const auto &qtUrl : qtUrls) { + if (!qtUrl.isValid()) + continue; + + if (qtUrl.isRelative()) // NSPasteboardWriting rejects such items. + continue; + NSURL *nsUrl = qtUrl.toNSURL(); auto *newItem = [[[NSDraggingItem alloc] initWithPasteboardWriter:nsUrl] autorelease]; const NSRect itemFrame = NSMakeRect(itemLocation.x, itemLocation.y, -- cgit v1.2.3