summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-16 02:27:02 +0100
committerder richter <der.richter@gmx.de>2024-03-16 15:29:27 +0100
commit3afcaeb71a01fbacbbd0208b14e5263165bf169b (patch)
tree59fdc8ad9fa2f168a8fad14c2af258fe3a160f56
parent2a36ed9abd6f1dc77cdd5e7d06a22a02b970a43c (diff)
downloadmpv-3afcaeb71a01fbacbbd0208b14e5263165bf169b.tar.bz2
mpv-3afcaeb71a01fbacbbd0208b14e5263165bf169b.tar.xz
mac/view: optimise drag and drop event handling
-rw-r--r--video/out/mac/view.swift28
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 {