diff options
author | der richter <der.richter@gmx.de> | 2024-03-16 02:27:02 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-16 15:29:27 +0100 |
commit | 3afcaeb71a01fbacbbd0208b14e5263165bf169b (patch) | |
tree | 59fdc8ad9fa2f168a8fad14c2af258fe3a160f56 | |
parent | 2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c (diff) | |
download | mpv-3afcaeb71a01fbacbbd0208b14e5263165bf169b.tar.bz2 mpv-3afcaeb71a01fbacbbd0208b14e5263165bf169b.tar.xz |
mac/view: optimise drag and drop event handling
-rw-r--r-- | video/out/mac/view.swift | 28 |
1 files 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 { |