From 3afcaeb71a01fbacbbd0208b14e5263165bf169b Mon Sep 17 00:00:00 2001 From: der richter Date: Sat, 16 Mar 2024 02:27:02 +0100 Subject: mac/view: optimise drag and drop event handling --- video/out/mac/view.swift | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/video/out/mac/view.swift b/video/out/mac/view.swift index 0d94c2d096..8e0d755a6a 100644 --- a/video/out/mac/view.swift +++ b/video/out/mac/view.swift @@ -78,30 +78,24 @@ class View: NSView, CALayerDelegate { override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { let pb = sender.draggingPasteboard guard let types = pb.types else { return false } + var files: [String] = [] if types.contains(.fileURL) || types.contains(.URL) { - if let urls = pb.readObjects(forClasses: [NSURL.self]) as? [URL] { - let files = urls.map { $0.absoluteString } - input?.open(files: files) - return true - } + guard let urls = pb.readObjects(forClasses: [NSURL.self]) as? [URL] else { return false } + files = urls.map { $0.absoluteString } } else if types.contains(.string) { guard let str = pb.string(forType: .string) else { return false } - var filesArray: [String] = [] - - for val in str.components(separatedBy: "\n") { - let url = val.trimmingCharacters(in: .whitespacesAndNewlines) + files = str.components(separatedBy: "\n").compactMap { + let url = $0.trimmingCharacters(in: .whitespacesAndNewlines) let path = (url as NSString).expandingTildeInPath - if isURL(url) { - filesArray.append(url) - } else if path.starts(with: "/") { - filesArray.append(path) - } + if isURL(url) { return url } + if path.starts(with: "/") { return path } + return nil } - input?.open(files: filesArray) - return true } - return false + if files.isEmpty { return false } + input?.open(files: files) + return true } override func acceptsFirstMouse(for event: NSEvent?) -> Bool { -- cgit v1.2.3