void CreateApplicationNotifications() { AXObserverCreate(KWMFocus.Window->PID, FocusedAXObserverCallback, &KWMFocus.Observer); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowMiniaturizedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowMovedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowResizedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXTitleChangedNotification, NULL); CFRunLoopAddSource(CFRunLoopGetCurrent(), AXObserverGetRunLoopSource(KWMFocus.Observer), kCFRunLoopDefaultMode); }
/* NOTE(koekeishiya): For compatibility with current Kwm code * TODO: Remove. */ ax_observer AXLibConstructObserver(pid_t PID, ObserverCallback Callback) { ax_observer Observer = {}; AXObserverCreate(PID, Callback, &Observer.Ref); Observer.AppRef = AXUIElementCreateApplication(PID); return Observer; }
void CreateApplicationNotifications() { DestroyApplicationNotifications(); if(KWMFocus.Window) { KWMFocus.Application = AXUIElementCreateApplication(KWMFocus.Window->PID); if(!KWMFocus.Application) return; AXError Error = AXObserverCreate(KWMFocus.Window->PID, FocusedAXObserverCallback, &KWMFocus.Observer); if(Error == kAXErrorSuccess) { DEBUG("CREATE NOTIFICATIONS") AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowMiniaturizedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowMovedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXWindowResizedNotification, NULL); AXObserverAddNotification(KWMFocus.Observer, KWMFocus.Application, kAXTitleChangedNotification, NULL); CFRunLoopAddSource(CFRunLoopGetCurrent(), AXObserverGetRunLoopSource(KWMFocus.Observer), kCFRunLoopDefaultMode); } } }
void AXLibConstructObserver(ax_application *Application, ObserverCallback Callback) { AXError Result = AXObserverCreate(Application->PID, Callback, &Application->Observer.Ref); Application->Observer.Valid = (Result == kAXErrorSuccess); Application->Observer.Application = Application; }