Пример #1
0
void CreateMarkedWindowNotifications()
{
    DestroyMarkedWindowNotifications();

    if(KWMScreen.MarkedWindow.WID != 0 &&
       KWMScreen.MarkedWindow.WID != -1)
    {
        KWMFocus.MarkedObserver = AXLibConstructObserver(KWMScreen.MarkedWindow.PID, MarkedAXObserverCallback);
        if(KWMFocus.MarkedObserver.Ref && KWMFocus.MarkedObserver.AppRef)
        {
            AXLibAddObserverNotificationOLD(&KWMFocus.MarkedObserver, kAXWindowMiniaturizedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.MarkedObserver, kAXWindowMovedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.MarkedObserver, kAXWindowResizedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.MarkedObserver, kAXUIElementDestroyedNotification, NULL);
            AXLibStartObserver(&KWMFocus.MarkedObserver);
        }

    }
}
Пример #2
0
void CreateFocusedWindowNotifications()
{
    DestroyFocusedWindowNotifications();

    if(KWMFocus.Window)
    {
        KWMFocus.FocusedObserver = AXLibConstructObserver(KWMFocus.Window->PID, FocusedAXObserverCallback);
        if(KWMFocus.FocusedObserver.Ref && KWMFocus.FocusedObserver.AppRef)
        {
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXWindowMiniaturizedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXWindowMovedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXWindowResizedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXTitleChangedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXFocusedWindowChangedNotification, NULL);
            AXLibAddObserverNotificationOLD(&KWMFocus.FocusedObserver, kAXUIElementDestroyedNotification, NULL);
            AXLibStartObserver(&KWMFocus.FocusedObserver);
        }
    }
}
Пример #3
0
internal bool
AXLibAddApplicationObserver(ax_application *Application)
{
    AXLibConstructObserver(Application, AXApplicationCallback);
    if(Application->Observer.Valid)
    {
        for(int Notification = AXApplication_Notification_WindowCreated;
                Notification < AXApplication_Notification_Count;
                ++Notification)
        {
            /* NOTE(koekeishiya): Mark the notification as successful. */
            if(AXLibAddObserverNotification(&Application->Observer, Application->Ref, AXNotificationFromEnum(Notification), Application) == kAXErrorSuccess)
            {
                Application->Notifications |= (1 << Notification);
            }
        }

        AXLibStartObserver(&Application->Observer);
        return AXLibHasApplicationObserverNotification(Application);
    }

    return false;
}