From 8bcbc041643655083734f85b4e23505ffd5c88ea Mon Sep 17 00:00:00 2001 From: Louis Pontoise Date: Thu, 27 Aug 2020 04:51:41 +0900 Subject: [PATCH] fix: alt-tab own windows were not shown in alt-tab (closes #555) --- src/logic/Applications.swift | 2 +- src/logic/events/AccessibilityEvents.swift | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/logic/Applications.swift b/src/logic/Applications.swift index a89c4cf2..7e3e5a9e 100644 --- a/src/logic/Applications.swift +++ b/src/logic/Applications.swift @@ -92,7 +92,7 @@ class Applications { } private static func isActualApplication(_ app: NSRunningApplication) -> Bool { - return (app.activationPolicy != .prohibited || isNotXpc(app)) && notAltTab(app) + return app.activationPolicy != .prohibited || isNotXpc(app) } private static func isNotXpc(_ app: NSRunningApplication) -> Bool { diff --git a/src/logic/events/AccessibilityEvents.swift b/src/logic/events/AccessibilityEvents.swift index 987328bb..34b7189b 100644 --- a/src/logic/events/AccessibilityEvents.swift +++ b/src/logic/events/AccessibilityEvents.swift @@ -30,7 +30,8 @@ func retryAxCallUntilTimeout_(_ group: DispatchGroup?, _ fn: @escaping () throws func handleEvent(_ type: String, _ element: AXUIElement) throws { debugPrint("Accessibility event", type, try element.title() ?? "nil") // events are handled concurrently, thus we check that the app is still running - if let pid = try element.pid() { + if let pid = try element.pid(), + try (!(pid == ProcessInfo.processInfo.processIdentifier && element.subrole() == "AXUnknown")) { switch type { case kAXApplicationActivatedNotification: try applicationActivated(element) case kAXApplicationHiddenNotification, @@ -120,7 +121,9 @@ private func windowCreated(_ element: AXUIElement, _ pid: pid_t) throws { } private func focusedWindowChanged(_ element: AXUIElement, _ pid: pid_t) throws { - if let wid = try element.cgWindowId() { + if let wid = try element.cgWindowId(), + pid != ProcessInfo.processInfo.processIdentifier || + (App.app.preferencesWindow.isKeyWindow || App.app.feedbackWindow?.isKeyWindow ?? false) { let axTitle = try element.title() let subrole = try element.subrole() let role = try element.role()