fix: avoid having multiple login items

This commit is contained in:
Louis Pontoise authored and lwouis committed 2020-04-02 19:39:39 +09:00
1 parent bc3f612f7a
commit 65816a270f
1 file changed
+6 -7
@@ -43,17 +43,16 @@ class GeneralTab {
// adding/removing login item depending on the checkbox state
@available(OSX, deprecated: 10.11)
@objc static func startAtLoginCallback(_ sender: NSControl) {
@objc private static func startAtLoginCallback(_ sender: NSControl) {
let loginItems = LSSharedFileListCreate(nil, kLSSharedFileListSessionLoginItems.takeRetainedValue(), nil).takeRetainedValue()
let loginItemsSnapshot = LSSharedFileListCopySnapshot(loginItems, nil).takeRetainedValue() as! [LSSharedFileListItem]
loginItemsSnapshot.forEach {
if LSSharedFileListItemCopyResolvedURL($0, 0, nil).takeRetainedValue() == App.url {
LSSharedFileListItemRemove(loginItems, $0)
}
}
if (sender as! NSButton).state == .on {
LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemBeforeFirst.takeRetainedValue(), nil, nil, App.url, nil, nil)
} else {
loginItemsSnapshot.forEach {
if LSSharedFileListItemCopyResolvedURL($0, 0, nil).takeRetainedValue() == App.url {
LSSharedFileListItemRemove(loginItems, $0)
}
}
}
}
}