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
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;
mutable std::weak_ptr<Bridge::Data> mBridgeData;
mutable AtspiInterfaces mInterfaces;
+ AtspiEvents mSuppressedEvents;
bool mIsOnRootLevel = false;
}; // Accessible class
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;
}
{ObjectPropertyChangeEvent::ROLE, "accessible-role"},
};
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::PROPERTY_CHANGED])
{
return;
}
{WindowEvent::RESTYLE, "Restyle"},
};
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::WINDOW_CHANGED])
{
return;
}
{State::HIGHLIGHTABLE, "highlightable"},
};
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::STATE_CHANGED]) // separate ?
{
return;
}
void BridgeObject::EmitBoundsChanged(Accessible* obj, Dali::Rect<> rect)
{
- if(!IsUp() || !IsBoundsChangedEventAllowed || obj->IsHidden())
+ if(!IsUp() || !IsBoundsChangedEventAllowed || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::BOUNDS_CHANGED])
{
return;
}
void BridgeObject::EmitCursorMoved(Accessible* obj, unsigned int cursorPosition)
{
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::TEXT_CARET_MOVED])
{
return;
}
{TextChangedState::DELETED, "delete"},
};
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::TEXT_CHANGED])
{
return;
}
void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, ScreenRelativeMoveType type)
{
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden() || obj->GetSuppressedEvents()[AtspiEvent::MOVED_OUT])
{
return;
}
void BridgeObject::EmitSocketAvailable(Accessible* obj)
{
- if(!IsUp() || obj->IsHidden())
+ if(!IsUp() || obj->IsHidden()) //TODO Suppress SocketAvailable event
{
return;
}