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 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() },
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user