4 #include <atspi/atspi.h>
5 #include "AccessibleNode.h"
16 #include <shared_mutex>
21 enum class WindowActivateInfoType {
22 DEFAULT_LABEL_ENALBED = 0x00,
23 DEFAULT_LABEL_ENALBED_WITHOUT_WINDOW = 0x01,
24 DEFAULT_LABEL_DISABLED = 0x02,
30 virtual ~IAtspiEvents() {}
31 virtual void onWindowActivated(AtspiAccessible * node,
32 WindowActivateInfoType type) = 0;
33 virtual void onWindowDeactivated(AtspiAccessible *node) = 0;
35 virtual void onWindowCreated(AtspiAccessible *node) = 0;
36 virtual void onWindowDestroyed(AtspiAccessible *node) = 0;
38 virtual void onVisibilityChanged(AtspiAccessible *node,
40 virtual void onObjectDefunct(AtspiAccessible *node) = 0;
43 class AccessibleWatcher : public IAtspiEvents {
48 static const AccessibleWatcher *getInstance();
49 virtual ~AccessibleWatcher();
52 AccessibleNode *getRootNode() const;
53 AccessibleNode *getTopNode() const;
55 void onWindowActivated(AtspiAccessible * node,
56 WindowActivateInfoType type) override;
57 void onWindowDeactivated(AtspiAccessible *node) override;
59 void onWindowCreated(AtspiAccessible *node) override;
60 void onWindowDestroyed(AtspiAccessible *node) override;
62 void onVisibilityChanged(AtspiAccessible *node,
63 bool visible) override;
64 void onObjectDefunct(AtspiAccessible *node) override;
66 void printDbgInformation() const;
69 void clearWindowList() const;
70 static void onAtspiWindowEvent(AtspiEvent *event, void *user_data);
72 bool removeFromActivatedList(AtspiAccessible *node);
73 bool addToActivatedList(AtspiAccessible *node);
74 bool removeFromWindowSet(AtspiAccessible *node);
75 bool addToWindowSet(AtspiAccessible *node);
78 static AtspiEventListener * listener;
79 mutable std::list<AtspiAccessible *> mActivatedWindowList;
80 mutable std::list<AtspiAccessible *> mActivatedApplicationList;
81 mutable std::set<AtspiAccessible *> mWindowSet;;
83 GDBusProxy * mDbusProxy;
84 std::map<AtspiAccessible *, AccessibleNode *> mAccessibleNode;
85 mutable std::mutex mLock;