@@ -25,7 +25,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
25
25
26
26
// state
27
27
28
- var reminderWindow : ReminderPanel ! // window for reminder
28
+ var reminderWindows : [ ReminderPanel ] ! = [ ] // windows for reminder
29
29
var settingsWindow : SettingsWindow ! // window for settings
30
30
var statusItem : NSStatusItem ! // space in sattus bar
31
31
var statusMenu : NSMenu ! // dropdown menu
@@ -81,13 +81,19 @@ class AppDelegate: NSObject, NSApplicationDelegate {
81
81
uiVisibleState. remindersSinceReset += 1
82
82
uiVisibleState. remindersSinceSleep += 1
83
83
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
+ }
85
89
}
86
90
87
91
@objc func hideReminder( ) {
88
92
print ( " hideReminder \( Date ( ) ) " )
89
93
90
- reminderWindow. closeReminder ( )
94
+ for reminderWindow in reminderWindows {
95
+ reminderWindow. closeReminder ( )
96
+ }
91
97
}
92
98
93
99
@objc func enableReminders( ) {
@@ -176,7 +182,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
176
182
menuButton. action = #selector( statusBarButtonClick ( _: ) )
177
183
menuButton. sendAction ( on: [ . leftMouseUp, . rightMouseUp] )
178
184
179
- reminderWindow = ReminderPanel ( state: uiVisibleState, callback: userClosedReminder)
180
185
settingsWindow = SettingsWindow ( state: uiVisibleState)
181
186
182
187
countdownMenuItem = NSMenuItem ( title: " " , action: nil , keyEquivalent: " " )
@@ -334,12 +339,14 @@ class ReminderPanel: NSPanel, NSWindowDelegate {
334
339
var callback : ( ( ) -> Void ) // to be called when reminder closes
335
340
private var shouldRemainKey = false // if something else becomes key, should we take it back?
336
341
private var canCloseReminder = false // has the reminder been animated in long enough to close it?
342
+ private var displayScreen : NSScreen ! // screen to display on
337
343
338
- init ( state: UIVisisbleState , callback: @escaping ( ( ) -> Void ) ) {
344
+ init ( state: UIVisisbleState , callback: @escaping ( ( ) -> Void ) , displayScreen : NSScreen ) {
339
345
self . state = state
340
346
self . callback = callback
347
+ self . displayScreen = displayScreen
341
348
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
343
350
styleMask: [ . borderless, // don't display peripheral elements
344
351
. nonactivatingPanel ] , // fixes some UI flicker when changing spaces
345
352
backing: . buffered, // render drawing into a display buffer
0 commit comments