X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Faccessible-impl.cpp;h=fd3e72edd9626b9f629f6c4225b67c26c1eb1063;hb=78c772dd32c14bd500d6d3378ffa3a6e87dc60fa;hp=be4735b211ea4e6807930766a375dc90e045fef9;hpb=5a7e40bbe510ebaa434d496754f19b6a476918b7;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/devel-api/controls/accessible-impl.cpp b/dali-toolkit/devel-api/controls/accessible-impl.cpp index be4735b..fd3e72e 100644 --- a/dali-toolkit/devel-api/controls/accessible-impl.cpp +++ b/dali-toolkit/devel-api/controls/accessible-impl.cpp @@ -35,15 +35,15 @@ AccessibleImpl::AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, : self(self), modal(modal) { - auto control = Dali::Toolkit::Control::DownCast(self); + auto control = Dali::Toolkit::Control::DownCast(Self()); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); if(controlImpl.mAccessibilityRole == Dali::Accessibility::Role::UNKNOWN) controlImpl.mAccessibilityRole = role; - self.PropertySetSignal().Connect(&controlImpl, [this, &controlImpl](Dali::Handle& handle, Dali::Property::Index index, Dali::Property::Value value) { - if(this->self != Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) + Self().PropertySetSignal().Connect(&controlImpl, [this, &controlImpl](Dali::Handle& handle, Dali::Property::Index index, Dali::Property::Value value) { + if(this->Self() != Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { return; } @@ -68,7 +68,7 @@ AccessibleImpl::AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, std::string AccessibleImpl::GetName() { - auto control = Dali::Toolkit::Control::DownCast(self); + auto control = Dali::Toolkit::Control::DownCast(Self()); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); @@ -86,7 +86,7 @@ std::string AccessibleImpl::GetName() if(auto raw = GetNameRaw(); !raw.empty()) return raw; - return self.GetProperty(Actor::Property::NAME); + return Self().GetProperty(Actor::Property::NAME); } std::string AccessibleImpl::GetNameRaw() @@ -96,7 +96,7 @@ std::string AccessibleImpl::GetNameRaw() std::string AccessibleImpl::GetDescription() { - auto control = Dali::Toolkit::Control::DownCast(self); + auto control = Dali::Toolkit::Control::DownCast(Self()); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); @@ -121,22 +121,22 @@ std::string AccessibleImpl::GetDescriptionRaw() Dali::Accessibility::Accessible* AccessibleImpl::GetParent() { - return Dali::Accessibility::Accessible::Get(self.GetParent()); + return Dali::Accessibility::Accessible::Get(Self().GetParent()); } size_t AccessibleImpl::GetChildCount() { - return self.GetChildCount(); + return Self().GetChildCount(); } Dali::Accessibility::Accessible* AccessibleImpl::GetChildAtIndex(size_t index) { - return Dali::Accessibility::Accessible::Get(self.GetChildAt(static_cast(index))); + return Dali::Accessibility::Accessible::Get(Self().GetChildAt(static_cast(index))); } size_t AccessibleImpl::GetIndexInParent() { - auto s = self; + auto s = Self(); auto parent = s.GetParent(); DALI_ASSERT_ALWAYS(parent && "can't call GetIndexInParent on object without parent"); auto count = parent.GetChildCount(); @@ -152,11 +152,12 @@ size_t AccessibleImpl::GetIndexInParent() Dali::Accessibility::Role AccessibleImpl::GetRole() { - return self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE); + return Self().GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE); } Dali::Accessibility::States AccessibleImpl::CalculateStates() { + Dali::Actor self = Self(); Dali::Accessibility::States s; s[Dali::Accessibility::State::FOCUSABLE] = self.GetProperty(Actor::Property::KEYBOARD_FOCUSABLE); s[Dali::Accessibility::State::FOCUSED] = Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor() == self; @@ -167,7 +168,6 @@ Dali::Accessibility::States AccessibleImpl::CalculateStates() s[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self; s[Dali::Accessibility::State::ENABLED] = true; s[Dali::Accessibility::State::SENSITIVE] = true; - s[Dali::Accessibility::State::ANIMATED] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED).Get(); s[Dali::Accessibility::State::VISIBLE] = true; if(modal) { @@ -187,7 +187,7 @@ Dali::Accessibility::States AccessibleImpl::GetStates() Dali::Accessibility::Attributes AccessibleImpl::GetAttributes() { std::unordered_map attribute_map; - auto q = Dali::Toolkit::Control::DownCast(self); + auto q = Dali::Toolkit::Control::DownCast(Self()); auto w = q.GetProperty(Dali::Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES); auto z = w.GetMap(); @@ -221,6 +221,7 @@ Dali::Accessibility::ComponentLayer AccessibleImpl::GetLayer() Dali::Rect<> AccessibleImpl::GetExtents(Dali::Accessibility::CoordType ctype) { + Dali::Actor self = Self(); Vector2 screenPosition = self.GetProperty(Dali::DevelActor::Property::SCREEN_POSITION) .Get(); @@ -248,7 +249,7 @@ double AccessibleImpl::GetAlpha() bool AccessibleImpl::GrabFocus() { - return Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(self); + return Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self()); } static Dali::Actor CreateHighlightIndicatorActor() @@ -260,14 +261,31 @@ static Dali::Actor CreateHighlightIndicatorActor() auto actor = Toolkit::ImageView::New(focusBorderImagePath); actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); DevelControl::AppendAccessibilityAttribute(actor, "highlight", ""); - actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED, true); actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false); return actor; } +void AccessibleImpl::ScrollToSelf() +{ + auto* child = this; + auto* parent = dynamic_cast(child->GetParent()); + + while (parent) + { + if (parent->IsScrollable()) + { + parent->ScrollToChild(child->Self()); + } + + child = parent; + parent = dynamic_cast(parent->GetParent()); + } +} + bool AccessibleImpl::GrabHighlight() { + Dali::Actor self = Self(); auto old = GetCurrentlyHighlightedActor(); if(!Dali::Accessibility::IsUp()) @@ -294,7 +312,7 @@ bool AccessibleImpl::GrabHighlight() // Remember the highlight actor, so that when the default is changed with // SetHighlightActor(), the currently displayed highlight can still be cleared. currentHighlightActor = highlight; - EnsureSelfVisible(); + ScrollToSelf(); self.Add(highlight); SetCurrentlyHighlightedActor(self); EmitHighlighted(true); @@ -304,6 +322,8 @@ bool AccessibleImpl::GrabHighlight() bool AccessibleImpl::ClearHighlight() { + Dali::Actor self = Self(); + if(!Dali::Accessibility::IsUp()) return false; if(GetCurrentlyHighlightedActor() == self) @@ -321,7 +341,7 @@ std::string AccessibleImpl::GetActionName(size_t index) { if(index >= GetActionCount()) return ""; Dali::TypeInfo type; - self.GetTypeInfo(type); + Self().GetTypeInfo(type); DALI_ASSERT_ALWAYS(type && "no TypeInfo object"); return type.GetActionName(index); } @@ -340,7 +360,7 @@ std::string AccessibleImpl::GetActionDescription(size_t index) size_t AccessibleImpl::GetActionCount() { Dali::TypeInfo type; - self.GetTypeInfo(type); + Self().GetTypeInfo(type); DALI_ASSERT_ALWAYS(type && "no TypeInfo object"); return type.GetActionCount(); } @@ -353,17 +373,17 @@ std::string AccessibleImpl::GetActionKeyBinding(size_t index) bool AccessibleImpl::DoAction(size_t index) { std::string actionName = GetActionName(index); - return self.DoAction(actionName, {}); + return Self().DoAction(actionName, {}); } bool AccessibleImpl::DoAction(const std::string& name) { - return self.DoAction(name, {}); + return Self().DoAction(name, {}); } bool AccessibleImpl::DoGesture(const Dali::Accessibility::GestureInfo& gestureInfo) { - auto control = Dali::Toolkit::Control::DownCast(self); + auto control = Dali::Toolkit::Control::DownCast(Self()); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); @@ -380,7 +400,7 @@ bool AccessibleImpl::DoGesture(const Dali::Accessibility::GestureInfo& gestureIn std::vector AccessibleImpl::GetRelationSet() { - auto control = Dali::Toolkit::Control::DownCast(self); + auto control = Dali::Toolkit::Control::DownCast(Self()); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); @@ -399,17 +419,9 @@ std::vector AccessibleImpl::GetRelationSet() return ret; } -void AccessibleImpl::EnsureChildVisible(Actor child) -{ -} - -void AccessibleImpl::EnsureSelfVisible() +bool AccessibleImpl::ScrollToChild(Actor child) { - auto parent = dynamic_cast(GetParent()); - if(parent) - { - parent->EnsureChildVisible(self); - } + return false; } Dali::Property::Index AccessibleImpl::GetNamePropertyIndex()