perf: alt-tab appears quicker when summoned
This commit is contained in:
1 parent
de02e5b83f
commit
c2bb89625e
3 files changed
+9
-2
No files matched your search
@@ -7,6 +7,8 @@ class Application: NSObject {
|
||||
var axUiElement: AXUIElement?
|
||||
var axObserver: AXObserver?
|
||||
var isReallyFinishedLaunching = false
|
||||
var isHidden: Bool!
|
||||
var icon: NSImage?
|
||||
var dockLabel: String?
|
||||
|
||||
static func notifications(_ app: NSRunningApplication) -> [String] {
|
||||
@@ -30,6 +32,8 @@ class Application: NSObject {
|
||||
init(_ runningApplication: NSRunningApplication) {
|
||||
self.runningApplication = runningApplication
|
||||
super.init()
|
||||
isHidden = runningApplication.isHidden
|
||||
icon = runningApplication.icon
|
||||
addAndObserveWindows()
|
||||
kvObservers = [
|
||||
runningApplication.observe(\.isFinishedLaunching, options: [.new]) { [weak self] _, _ in self?.addAndObserveWindows() },
|
||||
|
||||
@@ -4,10 +4,10 @@ class Window {
|
||||
var cgWindowId: CGWindowID
|
||||
var title: String!
|
||||
var thumbnail: NSImage?
|
||||
var icon: NSImage? { get { application.runningApplication.icon } }
|
||||
var icon: NSImage? { get { application.icon } }
|
||||
var shouldShowTheUser = true
|
||||
var isTabbed: Bool = false
|
||||
var isHidden: Bool { get { application.runningApplication.isHidden } }
|
||||
var isHidden: Bool { get { application.isHidden } }
|
||||
var dockLabel: Int? { get { application.dockLabel.flatMap { Int($0) } } }
|
||||
var isFullscreen: Bool
|
||||
var isMinimized: Bool
|
||||
|
||||
@@ -84,6 +84,9 @@ private func applicationActivated(_ element: AXUIElement) throws {
|
||||
|
||||
private func applicationHiddenOrShown(_ element: AXUIElement, _ pid: pid_t, _ type: String) throws {
|
||||
DispatchQueue.main.async {
|
||||
if let app = (Applications.list.first { $0.runningApplication.processIdentifier == pid }) {
|
||||
app.isHidden = type == kAXApplicationHiddenNotification
|
||||
}
|
||||
let windows = Windows.list.filter {
|
||||
// for AXUIElement of apps, CFEqual or == don't work; looks like a Cocoa bug
|
||||
return $0.application.runningApplication.processIdentifier == pid
|
||||
|
||||
Reference in new issue
Block a user