Merge "[AT-SPI] Introduce AtspiEvents" into devel/master
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 1 Apr 2022 07:06:38 +0000 (07:06 +0000)
committerGerrit Code Review <gerrit@review>
Fri, 1 Apr 2022 07:06:38 +0000 (07:06 +0000)
dali/devel-api/adaptor-framework/accessibility.h
dali/devel-api/atspi-interfaces/accessible.h
dali/internal/accessibility/bridge/bridge-object.cpp

index 1142576..f3576c6 100644 (file)
@@ -466,10 +466,42 @@ enum class AtspiInterface
   MAX_COUNT\r
 };\r
 \r
-using AtspiInterfaces  = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
-using ReadingInfoTypes = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
-using States           = EnumBitSet<State, State::MAX_COUNT>;\r
-using Attributes       = std::unordered_map<std::string, std::string>;\r
+/**\r
+ * @brief Enumeration of all AT-SPI events.\r
+ */\r
+enum class AtspiEvent\r
+{\r
+  PROPERTY_CHANGED,\r
+  BOUNDS_CHANGED,\r
+  LINK_SELECTED,\r
+  STATE_CHANGED,\r
+  CHILDREN_CHANGED,\r
+  VISIBLE_DATA_CHANGED,\r
+  SELECTION_CHANGED,\r
+  MODEL_CHANGED,\r
+  ACTIVE_DESCENDANT_CHANGED,\r
+  ROW_INSERTED,\r
+  ROW_REORDERED,\r
+  ROW_DELETED,\r
+  COLUMN_INSERTED,\r
+  COLUMN_REORDERED,\r
+  COLUMN_DELETED,\r
+  TEXT_BOUNDS_CHANGED,\r
+  TEXT_SELECTION_CHANGED,\r
+  TEXT_CHANGED,\r
+  TEXT_ATTRIBUTES_CHANGED,\r
+  TEXT_CARET_MOVED,\r
+  ATTRIBUTES_CHANGED,\r
+  MOVED_OUT,\r
+  WINDOW_CHANGED,\r
+  MAX_COUNT\r
+};\r
+\r
+using AtspiInterfaces   = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
+using AtspiEvents       = EnumBitSet<AtspiEvent, AtspiEvent::MAX_COUNT>;\r
+using ReadingInfoTypes  = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
+using States            = EnumBitSet<State, State::MAX_COUNT>;\r
+using Attributes        = std::unordered_map<std::string, std::string>;\r
 \r
 namespace Internal\r
 {\r
index c41f6bf..b42ad35 100644 (file)
@@ -375,6 +375,26 @@ public:
     return mIsOnRootLevel;
   }
 
+  /**
+   * @brief Gets all suppressed events.
+   *
+   * @return All suppressed events
+   */
+  AtspiEvents GetSuppressedEvents() const
+  {
+    return mSuppressedEvents;
+  }
+
+  /**
+   * @brief Gets all suppressed events.
+   *
+   * @return All suppressed events
+   */
+  AtspiEvents& GetSuppressedEvents()
+  {
+    return mSuppressedEvents;
+  }
+
 protected:
   Accessible();
   Accessible(const Accessible&)         = delete;
@@ -484,6 +504,7 @@ private:
 
   mutable std::weak_ptr<Bridge::Data> mBridgeData;
   mutable AtspiInterfaces             mInterfaces;
+  AtspiEvents                         mSuppressedEvents;
   bool                                mIsOnRootLevel = false;
 
 }; // Accessible class
index 3efe6cb..6490166 100644 (file)
@@ -48,7 +48,7 @@ void BridgeObject::RegisterInterfaces()
 
 void BridgeObject::EmitActiveDescendantChanged(Accessible* obj, Accessible* child)
 {
-  if(!IsUp() || obj->IsHidden() || child->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::ACTIVE_DESCENDANT_CHANGED] || child->IsHidden())
   {
     return;
   }
@@ -76,7 +76,7 @@ void BridgeObject::Emit(Accessible* obj, ObjectPropertyChangeEvent event)
     {ObjectPropertyChangeEvent::ROLE, "accessible-role"},
   };
 
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::PROPERTY_CHANGED])
   {
     return;
   }
@@ -121,7 +121,7 @@ void BridgeObject::Emit(Accessible* obj, WindowEvent event, unsigned int detail)
     {WindowEvent::RESTYLE, "Restyle"},
   };
 
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::WINDOW_CHANGED])
   {
     return;
   }
@@ -193,7 +193,7 @@ void BridgeObject::EmitStateChanged(Accessible* obj, State state, int newValue,
     {State::HIGHLIGHTABLE, "highlightable"},
   };
 
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::STATE_CHANGED]) // separate ?
   {
     return;
   }
@@ -216,7 +216,7 @@ void BridgeObject::EmitStateChanged(Accessible* obj, State state, int newValue,
 
 void BridgeObject::EmitBoundsChanged(Accessible* obj, Dali::Rect<> rect)
 {
-  if(!IsUp() || !IsBoundsChangedEventAllowed || obj->IsHidden())
+  if(!IsUp() || !IsBoundsChangedEventAllowed || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::BOUNDS_CHANGED])
   {
     return;
   }
@@ -239,7 +239,7 @@ void BridgeObject::EmitBoundsChanged(Accessible* obj, Dali::Rect<> rect)
 
 void BridgeObject::EmitCursorMoved(Accessible* obj, unsigned int cursorPosition)
 {
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::TEXT_CARET_MOVED])
   {
     return;
   }
@@ -262,7 +262,7 @@ void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsi
     {TextChangedState::DELETED, "delete"},
   };
 
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::TEXT_CHANGED])
   {
     return;
   }
@@ -285,7 +285,7 @@ void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsi
 
 void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, ScreenRelativeMoveType type)
 {
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::MOVED_OUT])
   {
     return;
   }
@@ -303,7 +303,7 @@ void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, ScreenRelativeMoveType
 
 void BridgeObject::EmitSocketAvailable(Accessible* obj)
 {
-  if(!IsUp() || obj->IsHidden())
+  if(!IsUp() || obj->IsHidden()) //TODO Suppress SocketAvailable event
   {
     return;
   }