From e2b634129285990d83cf73f39a148b5cbd2fcb6f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Artur=20=C5=9Awigo=C5=84?= Date: Fri, 24 Dec 2021 12:03:44 +0100 Subject: [PATCH] [AT-SPI] Derive ControlAccessible from ActorAccessible A related dali-adaptor change adds the ActorAccessible class and moves duplicated code (in AdaptorAccessible and ControlAccessible) from AdaptorAccessible to ActorAccessible. Change-Id: If1f62e9d832df61f95d814fde229859729855c45 --- .../utc-Dali-Accessibility-Controls-BridgeUp.cpp | 4 +- .../devel-api/controls/control-accessible.cpp | 78 +--------------------- .../devel-api/controls/control-accessible.h | 65 +----------------- 3 files changed, 5 insertions(+), 142 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp index 9e352e5..1ed53dc 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp @@ -613,7 +613,7 @@ int UtcDaliAccessibilityParentChildren(void) child_1_accessible -> GetIndexInParent(); DALI_ABORT("Object has parent, test abort"); } - catch (Dali::DaliException &){} + catch (const std::domain_error&){} parent.Add(child_1); parent.Add(child_2); @@ -1160,7 +1160,7 @@ int UtcDaliAccessibilityScrollToChildNonScrollable(void) DALI_TEST_EQUALS(accessible->IsScrollable(), false, TEST_LOCATION); DALI_TEST_EQUALS(accessible->ScrollToChild({}), false, TEST_LOCATION); - DALI_TEST_EQUALS(accessible->GetInternalActor(), Dali::Actor{}, TEST_LOCATION); + DALI_TEST_EQUALS(accessible->GetInternalActor(), label, TEST_LOCATION); Dali::Accessibility::TestEnableSC( false ); END_TEST; diff --git a/dali-toolkit/devel-api/controls/control-accessible.cpp b/dali-toolkit/devel-api/controls/control-accessible.cpp index 7010a6c..de61874 100644 --- a/dali-toolkit/devel-api/controls/control-accessible.cpp +++ b/dali-toolkit/devel-api/controls/control-accessible.cpp @@ -67,7 +67,7 @@ static Dali::Actor CreateHighlightIndicatorActor() } // unnamed namespace ControlAccessible::ControlAccessible(Dali::Actor self, Dali::Accessibility::Role role, bool modal) -: mSelf(self), +: ActorAccessible(self), mIsModal(modal) { auto control = Dali::Toolkit::Control::DownCast(Self()); @@ -174,40 +174,6 @@ std::string ControlAccessible::GetDescriptionRaw() const return {}; } -Dali::Accessibility::Accessible* ControlAccessible::GetParent() -{ - return Dali::Accessibility::Accessible::Get(Self().GetParent()); -} - -size_t ControlAccessible::GetChildCount() const -{ - return Self().GetChildCount(); -} - -Dali::Accessibility::Accessible* ControlAccessible::GetChildAtIndex(size_t index) -{ - return Dali::Accessibility::Accessible::Get(Self().GetChildAt(static_cast(index))); -} - -size_t ControlAccessible::GetIndexInParent() -{ - auto self = Self(); - auto parent = self.GetParent(); - DALI_ASSERT_ALWAYS(parent && "can't call GetIndexInParent on object without parent"); - - auto count = parent.GetChildCount(); - for(auto i = 0u; i < count; ++i) - { - auto child = parent.GetChildAt(i); - if(child == self) - { - return i; - } - } - DALI_ASSERT_ALWAYS(false && "object isn't child of it's parent"); - return static_cast(-1); -} - Dali::Accessibility::Role ControlAccessible::GetRole() const { return Self().GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE); @@ -316,43 +282,6 @@ Dali::Accessibility::Attributes ControlAccessible::GetAttributes() const return attributeMap; } -Dali::Accessibility::ComponentLayer ControlAccessible::GetLayer() const -{ - return Dali::Accessibility::ComponentLayer::WINDOW; -} - -Dali::Rect<> ControlAccessible::GetExtents(Dali::Accessibility::CoordinateType type) const -{ - Dali::Actor self = Self(); - - Vector2 screenPosition = self.GetProperty(Dali::DevelActor::Property::SCREEN_POSITION).Get(); - auto size = self.GetCurrentProperty(Actor::Property::SIZE) * self.GetCurrentProperty(Actor::Property::WORLD_SCALE); - bool positionUsesAnchorPoint = self.GetProperty(Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT).Get(); - Vector3 anchorPointOffSet = size * (positionUsesAnchorPoint ? self.GetCurrentProperty(Actor::Property::ANCHOR_POINT) : AnchorPoint::TOP_LEFT); - Vector2 position = Vector2((screenPosition.x - anchorPointOffSet.x), (screenPosition.y - anchorPointOffSet.y)); - - if(type == Dali::Accessibility::CoordinateType::WINDOW) - { - return {position.x, position.y, size.x, size.y}; - } - else // Dali::Accessibility::CoordinateType::SCREEN - { - auto window = Dali::DevelWindow::Get(self); - auto windowPosition = window.GetPosition(); - return {position.x + windowPosition.GetX(), position.y + windowPosition.GetY(), size.x, size.y}; - } -} - -int16_t ControlAccessible::GetMdiZOrder() const -{ - return 0; -} - -double ControlAccessible::GetAlpha() const -{ - return 0; -} - bool ControlAccessible::GrabFocus() { return Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self()); @@ -552,11 +481,6 @@ std::vector ControlAccessible::GetRelationSet() return ret; } -Dali::Actor ControlAccessible::GetInternalActor() -{ - return Dali::Actor{}; -} - bool ControlAccessible::ScrollToChild(Actor child) { return false; diff --git a/dali-toolkit/devel-api/controls/control-accessible.h b/dali-toolkit/devel-api/controls/control-accessible.h index 5e576fd..bbff327 100644 --- a/dali-toolkit/devel-api/controls/control-accessible.h +++ b/dali-toolkit/devel-api/controls/control-accessible.h @@ -21,10 +21,8 @@ // EXTERNAL INCLUDES #include #include -#include +#include #include -#include -#include #include // INTERNAL INCLUDES @@ -47,29 +45,15 @@ namespace Dali::Toolkit::DevelControl { * @see Dali::Accessibility::Text * @see Dali::Accessibility::EditableText */ -struct DALI_TOOLKIT_API ControlAccessible : public virtual Dali::Accessibility::Accessible, - public virtual Dali::Accessibility::Component, - public virtual Dali::Accessibility::Collection, +struct DALI_TOOLKIT_API ControlAccessible : public Dali::Accessibility::ActorAccessible, public virtual Dali::Accessibility::Action { protected: Vector2 mLastPosition{0.0f, 0.0f}; - Dali::WeakHandle mSelf; Dali::WeakHandle mCurrentHighlightActor; bool mIsModal = false; bool mIsRoot = false; - Dali::Actor Self() const - { - auto handle = mSelf.GetHandle(); - - // Control::Impl holds a std::unique_ptr to the Accessible object, - // so that one does not outlive the other. - DALI_ASSERT_ALWAYS(handle); - - return handle; - } - void ScrollToSelf(); /** @@ -112,26 +96,6 @@ public: virtual std::string GetDescriptionRaw() const; /** - * @copydoc Dali::Accessibility::Accessible::GetParent() - */ - Dali::Accessibility::Accessible* GetParent() override; - - /** - * @copydoc Dali::Accessibility::Accessible::GetChildCount() - */ - size_t GetChildCount() const override; - - /** - * @copydoc Dali::Accessibility::Accessible::GetChildAtIndex() - */ - Dali::Accessibility::Accessible* GetChildAtIndex(size_t index) override; - - /** - * @copydoc Dali::Accessibility::Accessible::GetIndexInParent() - */ - size_t GetIndexInParent() override; - - /** * @copydoc Dali::Accessibility::Accessible::GetRole() */ Dali::Accessibility::Role GetRole() const override; @@ -152,31 +116,11 @@ public: Dali::Accessibility::Attributes GetAttributes() const override; /** - * @copydoc Dali::Accessibility::Component::GetExtents() - */ - Dali::Rect<> GetExtents(Accessibility::CoordinateType type) const override; - - /** - * @copydoc Dali::Accessibility::Component::GetLayer() - */ - Dali::Accessibility::ComponentLayer GetLayer() const override; - - /** - * @copydoc Dali::Accessibility::Component::GetMdiZOrder() - */ - int16_t GetMdiZOrder() const override; - - /** * @copydoc Dali::Accessibility::Component::GrabFocus() */ bool GrabFocus() override; /** - * @copydoc Dali::Accessibility::Component::GetAlpha() - */ - double GetAlpha() const override; - - /** * @copydoc Dali::Accessibility::Component::GrabHighlight() */ bool GrabHighlight() override; @@ -232,11 +176,6 @@ public: std::vector GetRelationSet() override; /** - * @copydoc Dali::Accessibility::Accessible::GetInternalActor() - */ - Dali::Actor GetInternalActor() override; - - /** * @copydoc Dali::Accessibility::Accessible::GetStates() */ virtual Dali::Accessibility::States CalculateStates(); -- 2.7.4