feat: add fade-in for window previews (closes #2456)

This commit is contained in:
lwouis committed 2024-12-12 21:38:39 +01:00
1 parent 8a4aa7908f
commit 40c9a18be4
2 files changed
+19 -7

No files matched your search

+2 -5
View File
@@ -152,6 +152,7 @@ class Windows {
!Preferences.onlyShowApplications(),
App.app.appIsBeingUsed && App.app.thumbnailsPanel.isKeyWindow,
let window = focusedWindow(),
let id = window.cgWindowId,
let preview = window.getPreview(),
let position = window.position,
let size = window.size
@@ -159,11 +160,7 @@ class Windows {
App.app.previewPanel.orderOut(nil)
return
}
App.app.previewPanel.setPreview(preview)
var frame = NSRect(origin: position, size: size)
frame.origin.y = NSScreen.preferred().frame.maxY - frame.maxY
App.app.previewPanel.setFrame(frame, display: false)
App.app.previewPanel.order(.below, relativeTo: App.app.thumbnailsPanel.windowNumber)
App.app.previewPanel.show(id, preview, position, size)
}
static func voiceOverWindow(_ windowIndex: Int = focusedWindowIndex) {
+17 -2
View File
@@ -3,6 +3,7 @@ import Cocoa
class PreviewPanel: NSPanel {
private let previewView = NSImageView()
private let borderView = BorderView()
private var currentId: CGWindowID?
convenience init() {
self.init(contentRect: .zero, styleMask: [.nonactivatingPanel, .titled, .fullSizeContentView], backing: .buffered, defer: false)
@@ -24,8 +25,22 @@ class PreviewPanel: NSPanel {
setAccessibilitySubrole(.unknown)
}
func setPreview(_ preview: NSImage) {
previewView.image = preview
func show(_ id: CGWindowID, _ preview: NSImage, _ position: CGPoint, _ size: CGSize) {
if id != currentId {
previewView.image = preview
var frame = NSRect(origin: position, size: size)
frame.origin.y = NSScreen.preferred().frame.maxY - frame.maxY
setFrame(frame, display: false)
}
if id != currentId || !isVisible {
alphaValue = 0
NSAnimationContext.runAnimationGroup { context in
context.duration = 0.3
animator().alphaValue = 1
}
currentId = id
order(.below, relativeTo: App.app.thumbnailsPanel.windowNumber)
}
}
}