Settings window is no longer a popover.

This commit is contained in:
2025-05-31 19:14:33 -07:00
parent 727c1ceb09
commit 43e58d8af3
4 changed files with 55 additions and 25 deletions
+34 -3
View File
@@ -2,11 +2,15 @@ import AppKit
import Carbon
import ServiceManagement
// TODO: Rework the paths table and selection. Right now, it is very
// disfunctional and error-prone.
class SettingsViewController: NSViewController,
NSTextFieldDelegate, KeyDetectorButtonDelegate,
NSTableViewDataSource, NSTableViewDelegate,
PathsTableCellViewDelegate
{
private var keyboardEvents: EventMonitor?
private var recording = false
// NOTE: This is the default shortcut. If you were to change it, don't
@@ -346,6 +350,20 @@ class SettingsViewController: NSViewController,
launchAtLoginToggle.target = self
launchAtLoginToggle.action = #selector(affectLaunchAtLogin(_:))
keyboardEvents = LocalEventMonitor(mask: [.keyDown])
{ [weak self] event in
let key = event.keyCode
let modifiers = event.modifierFlags.rawValue
if modsContains(keys: OSCmd, in: modifiers) &&
key == kVK_ANSI_Q || modsContainsNone(in: modifiers)
{
NSApplication.shared.terminate(self)
}
return event
}
addSubviews()
setConstraints()
}
@@ -372,11 +390,18 @@ class SettingsViewController: NSViewController,
override func viewDidAppear() {
super.viewDidAppear()
keyboardEvents?.start()
NSApp.setActivationPolicy(.regular)
self.view.window?.center()
}
override func viewWillDisappear() {
super.viewWillDisappear()
keyboardEvents?.stop()
HotKeyManager.shared.registerHotKey(key: keyCode,
modifiers: modifiers)
@@ -399,6 +424,12 @@ class SettingsViewController: NSViewController,
PathManager.shared.savePaths()
}
override func viewDidDisappear() {
super.viewDidDisappear()
NSApp.setActivationPolicy(.accessory)
}
override func loadView() {
self.view = NSView()
}
@@ -578,9 +609,9 @@ class SettingsViewController: NSViewController,
makeIfNecessary: false) as? PathsTableCellView
{
if isDirectory(text) {
cell.titleField.textColor = NSColor.green
cell.titleField.textColor = NSColor.systemGreen
} else {
cell.titleField.textColor = NSColor.red
cell.titleField.textColor = NSColor.systemRed
}
}
}
@@ -599,7 +630,7 @@ class SettingsViewController: NSViewController,
}
// WARN:
// FIX: THere is a bug where the program crashes when adding a new
// FIX: There is a bug where the program crashes when adding a new
// path. This happens because the settings popup is closed before
// displaying the selection modal, as a result the new path item
// is cleared (well, b/c it's empty) and the path gets set into