Skip to content

Commit fbf2299

Browse files
committed
support multiple screens
1 parent 169bd05 commit fbf2299

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

remindful/AppDelegate.swift

+13-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2525

2626
// state
2727

28-
var reminderWindow: ReminderPanel! // window for reminder
28+
var reminderWindows: [ReminderPanel]! = [] // windows for reminder
2929
var settingsWindow: SettingsWindow! // window for settings
3030
var statusItem: NSStatusItem! // space in sattus bar
3131
var statusMenu: NSMenu! // dropdown menu
@@ -81,13 +81,19 @@ class AppDelegate: NSObject, NSApplicationDelegate {
8181
uiVisibleState.remindersSinceReset += 1
8282
uiVisibleState.remindersSinceSleep += 1
8383

84-
reminderWindow.displayReminder()
84+
let screens = NSScreen.screens
85+
reminderWindows = screens.map({(screen: NSScreen) -> ReminderPanel in ReminderPanel(state: uiVisibleState, callback: userClosedReminder, displayScreen: screen)})
86+
for reminderWindow in reminderWindows {
87+
reminderWindow.displayReminder()
88+
}
8589
}
8690

8791
@objc func hideReminder() {
8892
print("hideReminder \(Date())")
8993

90-
reminderWindow.closeReminder()
94+
for reminderWindow in reminderWindows {
95+
reminderWindow.closeReminder()
96+
}
9197
}
9298

9399
@objc func enableReminders() {
@@ -176,7 +182,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
176182
menuButton.action = #selector(statusBarButtonClick(_:))
177183
menuButton.sendAction(on: [.leftMouseUp, .rightMouseUp])
178184

179-
reminderWindow = ReminderPanel(state: uiVisibleState, callback: userClosedReminder)
180185
settingsWindow = SettingsWindow(state: uiVisibleState)
181186

182187
countdownMenuItem = NSMenuItem(title: "", action: nil, keyEquivalent: "")
@@ -334,12 +339,14 @@ class ReminderPanel: NSPanel, NSWindowDelegate {
334339
var callback: (() -> Void) // to be called when reminder closes
335340
private var shouldRemainKey = false // if something else becomes key, should we take it back?
336341
private var canCloseReminder = false // has the reminder been animated in long enough to close it?
342+
private var displayScreen: NSScreen! // screen to display on
337343

338-
init(state: UIVisisbleState, callback: @escaping (() -> Void)) {
344+
init(state: UIVisisbleState, callback: @escaping (() -> Void), displayScreen: NSScreen) {
339345
self.state = state
340346
self.callback = callback
347+
self.displayScreen = displayScreen
341348

342-
super.init(contentRect: NSRect(x: 0, y: 0, width: NSScreen.main!.frame.width, height: NSScreen.main!.frame.height), // make fullscreen
349+
super.init(contentRect: NSRect(x: displayScreen.frame.minX, y: displayScreen.frame.minY, width: displayScreen.frame.width, height: displayScreen.frame.height), // make fullscreen
343350
styleMask: [ .borderless, // don't display peripheral elements
344351
.nonactivatingPanel ], // fixes some UI flicker when changing spaces
345352
backing: .buffered, // render drawing into a display buffer

0 commit comments

Comments
 (0)