History

mac/view: optimise drag and drop event handling

der richter committed 2 years ago

Commit 3afcaeb1 parent 2a36ed91 file · +11 −17Browse files

Unified · Split

video/out/mac/view.swift+11−17
@@ -78,30 +78,24 @@ class View: NSView, CALayerDelegate { · 77 unmodified lines
7878 override func performDragOperation(_ sender: NSDraggingInfo) -> Bool {
7979 let pb = sender.draggingPasteboard
8080 guard let types = pb.types else { return false }
81+ var files: [String] = []
8182
8283 if types.contains(.fileURL) || types.contains(.URL) {
83− if let urls = pb.readObjects(forClasses: [NSURL.self]) as? [URL] {
84− let files = urls.map { $0.absoluteString }
85− input?.open(files: files)
86− return true
87− }
84+ guard let urls = pb.readObjects(forClasses: [NSURL.self]) as? [URL] else { return false }
85+ files = urls.map { $0.absoluteString }
8886 } else if types.contains(.string) {
8987 guard let str = pb.string(forType: .string) else { return false }
90− var filesArray: [String] = []
91−
92− for val in str.components(separatedBy: "\n") {
93− let url = val.trimmingCharacters(in: .whitespacesAndNewlines)
88+ files = str.components(separatedBy: "\n").compactMap {
89+ let url = $0.trimmingCharacters(in: .whitespacesAndNewlines)
9490 let path = (url as NSString).expandingTildeInPath
95− if isURL(url) {
96− filesArray.append(url)
97− } else if path.starts(with: "/") {
98− filesArray.append(path)
99− }
91+ if isURL(url) { return url }
92+ if path.starts(with: "/") { return path }
93+ return nil
10094 }
101− input?.open(files: filesArray)
102− return true
10395 }
104− return false
96+ if files.isEmpty { return false }
97+ input?.open(files: files)
98+ return true
10599 }
106100
107101 override func acceptsFirstMouse(for event: NSEvent?) -> Bool {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t