Skip to content

Commit 1951b49

Browse files
improve add and launch features
1 parent f35b629 commit 1951b49

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

Stapler/StaplerApp.swift

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,22 +191,31 @@ class StaplerViewModel: ObservableObject {
191191
objectWillChange.send()
192192
}
193193

194-
func addAliasesViaFileSelector() {
194+
func addAliasesViaFileSelector() -> Bool {
195195
let panel = NSOpenPanel()
196196
panel.allowsMultipleSelection = true
197197
panel.canChooseDirectories = false
198198
panel.canChooseFiles = true
199199

200200
if panel.runModal() == .OK {
201+
var addedAliases = false
201202
for url in panel.urls {
202203
do {
203204
let newAlias = try AliasItem(url: url)
204205
addAlias(newAlias)
206+
addedAliases = true
205207
} catch {
206208
handleError(error)
207209
}
208210
}
211+
212+
if addedAliases {
213+
hasUnsavedChanges = true
214+
objectWillChange.send()
215+
return true
216+
}
209217
}
218+
return false
210219
}
211220

212221
func handleError(_ error: Error) {
@@ -341,7 +350,6 @@ struct ContentView: View {
341350
NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in
342351
if event.keyCode == 36 { // Return key
343352
launchSelected()
344-
return nil
345353
} else if event.keyCode == 49 { // Space key
346354
showQuickLook()
347355
return nil
@@ -425,8 +433,9 @@ struct ContentView: View {
425433

426434
private func setupNotificationObservers() {
427435
NotificationCenter.default.addObserver(forName: .addAlias, object: nil, queue: .main) { _ in
428-
viewModel.addAliasesViaFileSelector()
429-
updateDocument()
436+
if viewModel.addAliasesViaFileSelector() {
437+
updateDocument()
438+
}
430439
}
431440
NotificationCenter.default.addObserver(forName: .removeAlias, object: nil, queue: .main) { _ in
432441
removeSelectedAliases()
@@ -455,6 +464,8 @@ struct ContentView: View {
455464
}
456465

457466
private func launchSelected() {
467+
guard !NSEvent.modifierFlags.contains(.command) else { return }
468+
458469
if selection.isEmpty {
459470
// If no items are selected, launch all items
460471
viewModel.launchAliases(at: IndexSet(integersIn: 0..<viewModel.document.aliases.count))

0 commit comments

Comments
 (0)