| | |
| | | public let activationPolicy: AlignerActivationPolicy |
| | | public let title: String |
| | | public let size: CGSize |
| | | public let frame: CGRect? |
| | | public let subrole: AlignerWindowSubrole |
| | | public let isMinimized: Bool |
| | | public let isFullscreen: Bool |
| | |
| | | title: String, |
| | | identifierSource: AlignerWindow.IdentifierSource = .cgWindow, |
| | | size: CGSize, |
| | | frame: CGRect? = nil, |
| | | subrole: AlignerWindowSubrole, |
| | | isMinimized: Bool = false, |
| | | isFullscreen: Bool = false, |
| | |
| | | self.activationPolicy = activationPolicy |
| | | self.title = title |
| | | self.size = size |
| | | self.frame = frame |
| | | self.subrole = subrole |
| | | self.isMinimized = isMinimized |
| | | self.isFullscreen = isFullscreen |
| | |
| | | return record.isMinimized || record.isFullscreen || isLargeEnough(record.size) |
| | | } |
| | | |
| | | public static func shouldIncludeAXOnlyRecord( |
| | | identifierSource: AlignerWindow.IdentifierSource, |
| | | isMinimized: Bool, |
| | | isFullscreen: Bool, |
| | | spaceIDs: [UInt64] |
| | | ) -> Bool { |
| | | if identifierSource == .syntheticAX { |
| | | return isMinimized |
| | | } |
| | | if isMinimized { |
| | | return true |
| | | } |
| | | if isFullscreen { |
| | | return !spaceIDs.isEmpty |
| | | } |
| | | return false |
| | | } |
| | | |
| | | private static func hasSupportedActivationPolicy(_ record: WindowEnumerationRecord) -> Bool { |
| | | record.activationPolicy == .regular |
| | | || (record.activationPolicy == .accessory && isKnownAccessoryMainWindow(record)) |
| | |
| | | isMinimized: record.isMinimized, |
| | | isFullscreen: record.isFullscreen, |
| | | isGhost: record.isGhost, |
| | | frame: record.frame, |
| | | spaceIDs: record.spaceIDs |
| | | ) |
| | | } |