4 #include <atspi/atspi.h>
5 #include "AccessibleNode.h"
6 #include "AccessibleUtils.h"
17 #include <shared_mutex>
22 enum class WindowActivateInfoType {
23 DEFAULT_LABEL_ENALBED = 0x00,
24 DEFAULT_LABEL_ENALBED_WITHOUT_WINDOW = 0x01,
25 DEFAULT_LABEL_DISABLED = 0x02,
31 virtual ~IAtspiEvents() {}
32 virtual void onWindowActivated(AtspiAccessible * node,
33 WindowActivateInfoType type) = 0;
34 virtual void onWindowDeactivated(AtspiAccessible *node) = 0;
36 virtual void onWindowCreated(AtspiAccessible *node) = 0;
37 virtual void onWindowDestroyed(AtspiAccessible *node) = 0;
39 virtual void onVisibilityChanged(AtspiAccessible *node,
41 virtual void onObjectDefunct(AtspiAccessible *node) = 0;
44 class AccessibleWatcher : public IAtspiEvents {
49 static const AccessibleWatcher *getInstance();
50 virtual ~AccessibleWatcher();
53 AccessibleNode *getRootNode() const;
54 AccessibleNode *getTopNode() const;
56 void onWindowActivated(AtspiAccessible * node,
57 WindowActivateInfoType type) override;
58 void onWindowDeactivated(AtspiAccessible *node) override;
60 void onWindowCreated(AtspiAccessible *node) override;
61 void onWindowDestroyed(AtspiAccessible *node) override;
63 void onVisibilityChanged(AtspiAccessible *node,
64 bool visible) override;
65 void onObjectDefunct(AtspiAccessible *node) override;
67 void printDbgInformation() const;
70 void clearWindowList() const;
71 static void onAtspiWindowEvent(AtspiEvent *event, void *user_data);
73 bool removeFromActivatedList(AtspiAccessible *node);
74 bool addToActivatedList(AtspiAccessible *node);
75 bool removeFromWindowSet(AtspiAccessible *node);
76 bool addToWindowSet(AtspiAccessible *node);
79 static AtspiEventListener * listener;
80 mutable std::list<AtspiAccessible *> mActivatedWindowList;
81 mutable std::list<AtspiAccessible *> mActivatedApplicationList;
82 mutable std::set<AtspiAccessible *> mWindowSet;;
84 GDBusProxy * mDbusProxy;
85 std::map<AtspiAccessible *, AccessibleNode *> mAccessibleNode;
86 mutable std::mutex mLock;