X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Finternal%2Faccessibility-manager%2Faccessibility-manager-impl.cpp;h=adc2fa07eed274571b106658728055e9e77deb23;hb=e051e39fe89448c656713c8b9a2594e1b92c870e;hp=e3f4209e76d0357222c62cc2acaf7a4b94835fc7;hpb=2ca1c3856ce848a94f54444f1014a820e91ee207;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.cpp b/dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.cpp index e3f4209..adc2fa0 100644 --- a/dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.cpp +++ b/dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.cpp @@ -19,8 +19,8 @@ #include "accessibility-manager-impl.h" // EXTERNAL INCLUDES -#include #include +#include // INTERNAL INCLUDES #include @@ -80,27 +80,37 @@ std::string AccessibilityManager::GetAccessibilityAttribute(Actor actor, Toolkit void AccessibilityManager::SetFocusOrder(Actor actor, const unsigned int order) { - if(order == 0) + auto control = Toolkit::Control::DownCast(actor); + + if(!control || order == 0) + { return; + } if(order >= mFocusOrder.size()) + { mFocusOrder.resize(order + 1); + } auto it = mFocusOrder.begin() + order; - mFocusOrder.insert(it, actor); + mFocusOrder.insert(it, control); if(order > 0) { - Actor prev = mFocusOrder[order - 1]; - DevelControl::AppendAccessibilityRelation(prev, actor, Accessibility::RelationType::FLOWS_TO); - DevelControl::AppendAccessibilityRelation(actor, prev, Accessibility::RelationType::FLOWS_FROM); + if(auto prev = mFocusOrder[order - 1]) + { + DevelControl::AppendAccessibilityRelation(prev, control, Accessibility::RelationType::FLOWS_TO); + DevelControl::AppendAccessibilityRelation(control, prev, Accessibility::RelationType::FLOWS_FROM); + } } if(order + 1 < mFocusOrder.size()) { - Actor next = mFocusOrder[order + 1]; - DevelControl::AppendAccessibilityRelation(actor, next, Accessibility::RelationType::FLOWS_TO); - DevelControl::AppendAccessibilityRelation(next, actor, Accessibility::RelationType::FLOWS_FROM); + if(auto next = mFocusOrder[order + 1]) + { + DevelControl::AppendAccessibilityRelation(control, next, Accessibility::RelationType::FLOWS_TO); + DevelControl::AppendAccessibilityRelation(next, control, Accessibility::RelationType::FLOWS_FROM); + } } } @@ -132,9 +142,13 @@ Actor AccessibilityManager::GetActorByFocusOrder(const unsigned int order) bool AccessibilityManager::SetCurrentFocusActor(Actor actor) { - Dali::Accessibility::Accessible::SetCurrentlyHighlightedActor(actor); + auto control = Toolkit::Control::DownCast(actor); + if(!control) + { + return false; + } - return true; + return Toolkit::DevelControl::GrabAccessibilityHighlight(control); } Actor AccessibilityManager::GetCurrentFocusActor() @@ -180,8 +194,13 @@ bool AccessibilityManager::MoveFocusBackward() void AccessibilityManager::ClearFocus() { - auto actor = GetCurrentFocusActor(); - Toolkit::DevelControl::ClearAccessibilityHighlight(actor); + auto control = Toolkit::Control::DownCast(GetCurrentFocusActor()); + if(!control) + { + return; + } + + Toolkit::DevelControl::ClearAccessibilityHighlight(control); } void AccessibilityManager::Reset() @@ -190,11 +209,14 @@ void AccessibilityManager::Reset() for(std::size_t i = 2; i < mFocusOrder.size(); ++i) { - Actor prev = mFocusOrder[i - 1]; - Actor next = mFocusOrder[i]; - - DevelControl::RemoveAccessibilityRelation(prev, next, Accessibility::RelationType::FLOWS_TO); - DevelControl::RemoveAccessibilityRelation(next, prev, Accessibility::RelationType::FLOWS_FROM); + auto prev = mFocusOrder[i - 1]; + auto next = mFocusOrder[i]; + + if(prev && next) + { + DevelControl::RemoveAccessibilityRelation(prev, next, Accessibility::RelationType::FLOWS_TO); + DevelControl::RemoveAccessibilityRelation(next, prev, Accessibility::RelationType::FLOWS_FROM); + } } mFocusOrder.clear();