Merge pull request #69 from Leland-Takamine/main_loop

Run main loop before retrieving list of running applications on MacOS
This commit is contained in:
f-trycua
2025-03-28 11:06:53 -07:00
committed by GitHub
@@ -352,7 +352,7 @@ class MacOSAccessibilityHandler(BaseAccessibilityHandler):
"""Get all visible windows in the system."""
try:
windows = []
running_apps = NSWorkspace.sharedWorkspace().runningApplications()
running_apps = self.get_running_apps()
for app in running_apps:
try:
@@ -382,6 +382,13 @@ class MacOSAccessibilityHandler(BaseAccessibilityHandler):
except:
return []
def get_running_apps(self):
# From NSWorkspace.runningApplications docs: https://developer.apple.com/documentation/appkit/nsworkspace/runningapplications
# "Similar to the NSRunningApplication classs properties, this property will only change when the main run loop runs in a common mode"
# So we need to run the main run loop to get the latest running applications
Foundation.CFRunLoopRunInMode(Foundation.kCFRunLoopDefaultMode, 0.1, False)
return NSWorkspace.sharedWorkspace().runningApplications()
def get_ax_attribute(self, element, attribute):
return element_attribute(element, attribute)