diff --git a/src/logic/Screen.swift b/src/logic/Screen.swift index fd8efd02..cbca6c0b 100644 --- a/src/logic/Screen.swift +++ b/src/logic/Screen.swift @@ -9,7 +9,7 @@ class Screen { static func preferred() -> NSScreen { switch Preferences.showOnScreen { case .includingMouse: return withMouse() ?? NSScreen.main! // .main as fall-back - case .active: return NSScreen.main! + case .active: return NSScreen.main! // macOS bug: this will return screens[0] if the main screen shows a fullscreen app case .includingMenubar: return NSScreen.screens.first! } } diff --git a/src/ui/App.swift b/src/ui/App.swift index f3cc01b2..92474ea9 100644 --- a/src/ui/App.swift +++ b/src/ui/App.swift @@ -195,7 +195,7 @@ class App: AppCenterApplication, NSApplicationDelegate { guard appIsBeingUsed else { return } thumbnailsPanel.thumbnailsView.updateItemsAndLayout(currentScreen) guard appIsBeingUsed else { return } - thumbnailsPanel.setFrame(thumbnailsPanel.thumbnailsView.frame, display: false) + thumbnailsPanel.setContentSize(thumbnailsPanel.thumbnailsView.frame.size) thumbnailsPanel.display() guard appIsBeingUsed else { return } Screen.repositionPanel(thumbnailsPanel, currentScreen, .appleCentered) @@ -250,6 +250,8 @@ class App: AppCenterApplication, NSApplicationDelegate { guard appIsBeingUsed else { return } Applications.refreshBadges() guard appIsBeingUsed else { return } + thumbnailsPanel.makeKeyAndOrderFront(nil) // workaround: without this, switching between 2 monitors make thumbnailPanel invisible + guard appIsBeingUsed else { return } refreshOpenUi() guard appIsBeingUsed else { return } thumbnailsPanel.show() diff --git a/src/ui/FeedbackWindow.swift b/src/ui/FeedbackWindow.swift index ab2ed935..53e0f082 100644 --- a/src/ui/FeedbackWindow.swift +++ b/src/ui/FeedbackWindow.swift @@ -9,8 +9,8 @@ class FeedbackWindow: NSWindow { var canBecomeKey_ = true override var canBecomeKey: Bool { canBecomeKey_ } - override init(contentRect: NSRect, styleMask style: StyleMask, backing backingStoreType: BackingStoreType, defer flag: Bool) { - super.init(contentRect: .zero, styleMask: style, backing: backingStoreType, defer: flag) + convenience init() { + self.init(contentRect: .zero, styleMask: [.titled, .miniaturizable, .closable], backing: .buffered, defer: false) setupWindow() setupView() } @@ -19,7 +19,6 @@ class FeedbackWindow: NSWindow { title = NSLocalizedString("Send feedback", comment: "") hidesOnDeactivate = false isReleasedWhenClosed = false - styleMask.insert([.miniaturizable, .closable]) } private func setupView() { diff --git a/src/ui/main-window/ThumbnailsPanel.swift b/src/ui/main-window/ThumbnailsPanel.swift index 410bd650..a08b476c 100644 --- a/src/ui/main-window/ThumbnailsPanel.swift +++ b/src/ui/main-window/ThumbnailsPanel.swift @@ -5,7 +5,7 @@ class ThumbnailsPanel: NSPanel { override var canBecomeKey: Bool { true } convenience init() { - self.init(contentRect: .zero, styleMask: .nonactivatingPanel, backing: .buffered, defer: true) + self.init(contentRect: .zero, styleMask: .nonactivatingPanel, backing: .buffered, defer: false) isFloatingPanel = true updateFadeOutAnimation() hidesOnDeactivate = false @@ -13,6 +13,8 @@ class ThumbnailsPanel: NSPanel { titleVisibility = .hidden backgroundColor = .clear contentView!.addSubview(thumbnailsView) + preservesContentDuringLiveResize = false + disableSnapshotRestoration() // 2nd highest level possible; this allows the app to go on top of context menus // highest level is .screenSaver but makes drag and drop on top the main window impossible level = .popUpMenu diff --git a/src/ui/preferences-window/PreferencesWindow.swift b/src/ui/preferences-window/PreferencesWindow.swift index 886b5583..93918a82 100644 --- a/src/ui/preferences-window/PreferencesWindow.swift +++ b/src/ui/preferences-window/PreferencesWindow.swift @@ -5,8 +5,8 @@ class PreferencesWindow: NSWindow, NSToolbarDelegate { var canBecomeKey_ = true override var canBecomeKey: Bool { canBecomeKey_ } - override init(contentRect: NSRect, styleMask style: StyleMask, backing backingStoreType: BackingStoreType, defer flag: Bool) { - super.init(contentRect: .zero, styleMask: style, backing: backingStoreType, defer: flag) + convenience init() { + self.init(contentRect: .zero, styleMask: [.titled, .miniaturizable, .closable], backing: .buffered, defer: false) setupWindow() setupView() } @@ -14,7 +14,6 @@ class PreferencesWindow: NSWindow, NSToolbarDelegate { private func setupWindow() { isReleasedWhenClosed = false hidesOnDeactivate = false - styleMask.insert([.miniaturizable, .closable]) addQuitButton() }