From de28e6c167b52e1b79c8ec0f87e2f58c26181292 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Fri, 25 Jun 2021 21:05:30 +0900 Subject: [PATCH] [ATSPI] Add MoveOuted interface This interface is used for an object moving out of view area. The following dali-toolkit patch is using this interface. https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-toolkit/+/260342/ Change-Id: Ibd0fbfa3ddb22c66ef4ece26b97ec87a439bfe1a --- dali/devel-api/adaptor-framework/accessibility-impl.h | 15 +++++++++++++++ dali/devel-api/adaptor-framework/accessibility.h | 10 ++++++++++ dali/internal/accessibility/bridge/accessible.cpp | 9 +++++++++ dali/internal/accessibility/bridge/bridge-object.cpp | 15 +++++++++++++++ dali/internal/accessibility/bridge/bridge-object.h | 1 + dali/internal/accessibility/bridge/dummy-atspi.cpp | 4 ++++ dali/internal/accessibility/bridge/dummy-atspi.h | 4 ++++ 7 files changed, 58 insertions(+) diff --git a/dali/devel-api/adaptor-framework/accessibility-impl.h b/dali/devel-api/adaptor-framework/accessibility-impl.h index 304f2c1..bce6135 100644 --- a/dali/devel-api/adaptor-framework/accessibility-impl.h +++ b/dali/devel-api/adaptor-framework/accessibility-impl.h @@ -218,6 +218,14 @@ struct DALI_ADAPTOR_API Bridge virtual void EmitTextChanged(Accessible* obj, TextChangedState state, unsigned int position, unsigned int length, const std::string& content) = 0; /** + * @brief Emits MoveOuted event on at-spi bus. + * + * @param[in] obj Accessible object + * @param[in] type Direction type when an Accessible object moves out of screen + **/ + virtual void EmitMovedOutOfScreen(Accessible* obj, MovedOutOfScreenType type) = 0; + + /** * @brief Emits state-changed event on at-spi bus. * * @param[in] obj The accessible object @@ -534,6 +542,13 @@ public: void EmitTextCursorMoved(unsigned int cursorPosition); /** + * @brief Emits "MoveOuted" event. + * + * @param[in] type moved out of screen type + */ + void EmitMovedOutOfScreen(MovedOutOfScreenType type); + + /** * @brief Emits "highlighted" event. * * @param[in] event The enumerated window event diff --git a/dali/devel-api/adaptor-framework/accessibility.h b/dali/devel-api/adaptor-framework/accessibility.h index 33dc1e1..3196176 100644 --- a/dali/devel-api/adaptor-framework/accessibility.h +++ b/dali/devel-api/adaptor-framework/accessibility.h @@ -42,6 +42,16 @@ namespace Dali namespace Accessibility { /** + * @brief Enumeration describing signal that occurs when object moves out of screen. + */ +enum class MovedOutOfScreenType +{ + NONE, + TOP_LEFT, ///< Object moves out of top(or left) side of screen + BOTTOM_RIGHT ///< Object moves out of bottom(or right) side of screen +}; + +/** * @brief Enumeration describing a relation between accessible objects * 1 to 0..N relation model is supported. By default relation is not symmetrical. * Symmetry must be explicitly maintained. diff --git a/dali/internal/accessibility/bridge/accessible.cpp b/dali/internal/accessibility/bridge/accessible.cpp index fb75de8..95814c2 100644 --- a/dali/internal/accessibility/bridge/accessible.cpp +++ b/dali/internal/accessibility/bridge/accessible.cpp @@ -143,6 +143,15 @@ void Accessible::EmitTextCursorMoved(unsigned int cursorPosition) bridgeData->mBridge->EmitCursorMoved(this, cursorPosition); } } + +void Accessible::EmitMovedOutOfScreen(MovedOutOfScreenType type) +{ + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitMovedOutOfScreen(this, type); + } +} + void Accessible::Emit(WindowEvent event, unsigned int detail) { if(auto bridgeData = GetBridgeData()) diff --git a/dali/internal/accessibility/bridge/bridge-object.cpp b/dali/internal/accessibility/bridge/bridge-object.cpp index a0c157d..fad8c2c 100644 --- a/dali/internal/accessibility/bridge/bridge-object.cpp +++ b/dali/internal/accessibility/bridge/bridge-object.cpp @@ -571,3 +571,18 @@ void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsi {"", "root"}); } } + +void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, MovedOutOfScreenType type) +{ + auto addr = obj->GetAddress(); + std::string p = addr ? ATSPI_PREFIX_PATH + addr.GetPath() : ATSPI_NULL_PATH; + dbusServer.emit2, Address>( + p, + AtspiDbusInterfaceEventObject, + "MoveOuted", + "", + static_cast(type), + 0, + {0}, + {"", "root"}); +} diff --git a/dali/internal/accessibility/bridge/bridge-object.h b/dali/internal/accessibility/bridge/bridge-object.h index f836c20..8b32ac3 100644 --- a/dali/internal/accessibility/bridge/bridge-object.h +++ b/dali/internal/accessibility/bridge/bridge-object.h @@ -44,6 +44,7 @@ protected: void Emit(Dali::Accessibility::Accessible* obj, Dali::Accessibility::WindowEvent event, unsigned int detail) override; void Emit(Dali::Accessibility::Accessible* obj, Dali::Accessibility::ObjectPropertyChangeEvent we) override; void EmitBoundsChanged(Dali::Accessibility::Accessible* obj, Dali::Rect<> rect) override; + void EmitMovedOutOfScreen(Dali::Accessibility::Accessible* obj, Dali::Accessibility::MovedOutOfScreenType type) override; }; #endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_OBJECT_H diff --git a/dali/internal/accessibility/bridge/dummy-atspi.cpp b/dali/internal/accessibility/bridge/dummy-atspi.cpp index 716a2e7..8cb4119 100644 --- a/dali/internal/accessibility/bridge/dummy-atspi.cpp +++ b/dali/internal/accessibility/bridge/dummy-atspi.cpp @@ -126,6 +126,10 @@ void Accessibility::Accessible::EmitActiveDescendantChanged(Accessibility::Acces { } +void Accessibility::Accessible::EmitMovedOutOfScreen(Accessibility::MovedOutOfScreenType type) +{ +} + void Accessibility::Accessible::FindWordSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks) { } diff --git a/dali/internal/accessibility/bridge/dummy-atspi.h b/dali/internal/accessibility/bridge/dummy-atspi.h index f48e878..7ea43d3 100644 --- a/dali/internal/accessibility/bridge/dummy-atspi.h +++ b/dali/internal/accessibility/bridge/dummy-atspi.h @@ -102,6 +102,10 @@ struct DummyBridge : Dali::Accessibility::Bridge { } + void EmitMovedOutOfScreen(Accessibility::Accessible* obj, MovedOutOfScreenType type) override + { + } + void EmitStateChanged(Accessibility::Accessible* obj, Accessibility::State state, int newValue, int reserved) override { } -- 2.7.4