4 #include <atspi/atspi.h>
5 #include "AccessibleNode.h"
6 #include "AccessibleUtils.h"
17 #include <shared_mutex>
23 * @brief WindowActivateInfoType enum class
26 enum class WindowActivateInfoType {
27 DEFAULT_LABEL_ENALBED = 0x00,
28 DEFAULT_LABEL_ENALBED_WITHOUT_WINDOW = 0x01,
29 DEFAULT_LABEL_DISABLED = 0x02,
34 * @brief IAtspiEvents Interface
43 virtual ~IAtspiEvents() {}
49 virtual void onWindowActivated(AtspiAccessible * node,
50 WindowActivateInfoType type) = 0;
55 virtual void onWindowDeactivated(AtspiAccessible *node) = 0;
61 virtual void onWindowCreated(AtspiAccessible *node) = 0;
67 virtual void onWindowDestroyed(AtspiAccessible *node) = 0;
73 virtual void onVisibilityChanged(AtspiAccessible *node,
80 virtual void onObjectDefunct(AtspiAccessible *node) = 0;
84 * @brief AccessibleWatcher class
87 class AccessibleWatcher : public IAtspiEvents {
101 static const AccessibleWatcher *getInstance();
106 virtual ~AccessibleWatcher();
113 std::unique_ptr<AccessibleNode> getRootNode() const;
118 std::vector<std::unique_ptr<AccessibleNode>> getTopNode() const;
124 void onWindowActivated(AtspiAccessible * node,
125 WindowActivateInfoType type) override;
130 void onWindowDeactivated(AtspiAccessible *node) override;
136 void onWindowCreated(AtspiAccessible *node) override;
141 void onWindowDestroyed(AtspiAccessible *node) override;
147 void onVisibilityChanged(AtspiAccessible *node,
148 bool visible) override;
153 void onObjectDefunct(AtspiAccessible *node) override;
159 void printDbgInformation() const;
162 void clearWindowList() const;
167 static void onAtspiWindowEvent(AtspiEvent *event, void *user_data);
173 bool removeFromActivatedList(AtspiAccessible *node);
178 bool addToActivatedList(AtspiAccessible *node);
183 bool removeFromWindowSet(AtspiAccessible *node);
188 bool addToWindowSet(AtspiAccessible *node);
195 static AtspiEventListener * listener;
200 mutable std::list<AtspiAccessible *> mActivatedWindowList;
205 mutable std::list<AtspiAccessible *> mActivatedApplicationList;
210 mutable std::set<AtspiAccessible *> mWindowSet;;
215 GDBusProxy * mDbusProxy;
220 std::map<AtspiAccessible *, AccessibleNode *> mAccessibleNode;
225 mutable std::mutex mLock;