perf: alt-tab appears quicker when summoned

This commit is contained in:
Louis Pontoise authored and lwouis committed 2020-08-27 22:44:40 +09:00
1 parent de02e5b83f
commit c2bb89625e
3 files changed
+9 -2

No files matched your search

+4
View File
@@ -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() },
+2 -2
View File
@@ -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