feat: add fade-in for window previews (closes #2456)
This commit is contained in:
1 parent
8a4aa7908f
commit
40c9a18be4
2 files changed
+19
-7
No files matched your search
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user