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 axUiElement: AXUIElement?
var axObserver: AXObserver? var axObserver: AXObserver?
var isReallyFinishedLaunching = false var isReallyFinishedLaunching = false
var isHidden: Bool!
var icon: NSImage?
var dockLabel: String? var dockLabel: String?
static func notifications(_ app: NSRunningApplication) -> [String] { static func notifications(_ app: NSRunningApplication) -> [String] {
@@ -30,6 +32,8 @@ class Application: NSObject {
init(_ runningApplication: NSRunningApplication) { init(_ runningApplication: NSRunningApplication) {
self.runningApplication = runningApplication self.runningApplication = runningApplication
super.init() super.init()
isHidden = runningApplication.isHidden
icon = runningApplication.icon
addAndObserveWindows() addAndObserveWindows()
kvObservers = [ kvObservers = [
runningApplication.observe(\.isFinishedLaunching, options: [.new]) { [weak self] _, _ in self?.addAndObserveWindows() }, runningApplication.observe(\.isFinishedLaunching, options: [.new]) { [weak self] _, _ in self?.addAndObserveWindows() },
+2 -2
View File
@@ -4,10 +4,10 @@ class Window {
var cgWindowId: CGWindowID var cgWindowId: CGWindowID
var title: String! var title: String!
var thumbnail: NSImage? var thumbnail: NSImage?
var icon: NSImage? { get { application.runningApplication.icon } } var icon: NSImage? { get { application.icon } }
var shouldShowTheUser = true var shouldShowTheUser = true
var isTabbed: Bool = false 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 dockLabel: Int? { get { application.dockLabel.flatMap { Int($0) } } }
var isFullscreen: Bool var isFullscreen: Bool
var isMinimized: 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 { private func applicationHiddenOrShown(_ element: AXUIElement, _ pid: pid_t, _ type: String) throws {
DispatchQueue.main.async { DispatchQueue.main.async {
if let app = (Applications.list.first { $0.runningApplication.processIdentifier == pid }) {
app.isHidden = type == kAXApplicationHiddenNotification
}
let windows = Windows.list.filter { let windows = Windows.list.filter {
// for AXUIElement of apps, CFEqual or == don't work; looks like a Cocoa bug // for AXUIElement of apps, CFEqual or == don't work; looks like a Cocoa bug
return $0.application.runningApplication.processIdentifier == pid return $0.application.runningApplication.processIdentifier == pid