diff --git a/src/api-wrappers/AXUIElement.swift b/src/api-wrappers/AXUIElement.swift index 17d82663..2d7ebd51 100644 --- a/src/api-wrappers/AXUIElement.swift +++ b/src/api-wrappers/AXUIElement.swift @@ -75,7 +75,7 @@ extension AXUIElement { // Some non-windows have cgWindowId == 0 (e.g. windows of apps starting at login with the checkbox "Hidden" checked) return wid != 0 && - books(runningApp) || ( + (books(runningApp) || keynote(runningApp)) || ( // CGWindowLevel == .normalWindow helps filter out iStats Pro and other top-level pop-overs, and floating windows isOnNormalLevel && ([kAXStandardWindowSubrole, kAXDialogSubrole].contains(subrole) || @@ -91,7 +91,14 @@ extension AXUIElement { drBetotte(runningApp))) } + private func keynote(_ runningApp: NSRunningApplication) -> Bool { + // apple Keynote has a fake fullscreen window when in presentation mode + // it covers the screen with a AXUnknown window instead of using standard fullscreen mode + return runningApp.bundleIdentifier == "com.apple.iWork.Keynote" + } + private func openBoard(_ runningApp: NSRunningApplication) -> Bool { + // OpenBoard is a ported app which doesn't use standard macOS windows return runningApp.bundleIdentifier == "org.oe-f.OpenBoard" }