X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Fcontrol-devel.cpp;h=ccf624baf35ea17b380fa312bd0fe550a205baa5;hp=dc7a1285932c62a190d482a6a05ddaf25b85887d;hb=a9d56fc12792cd84a5d41568dc0bbf26157f4334;hpb=7c13cc0c065ae22e7ad0deaea4f56730ff050c5c diff --git a/dali-toolkit/devel-api/controls/control-devel.cpp b/dali-toolkit/devel-api/controls/control-devel.cpp index dc7a128..ccf624b 100644 --- a/dali-toolkit/devel-api/controls/control-devel.cpp +++ b/dali-toolkit/devel-api/controls/control-devel.cpp @@ -193,7 +193,7 @@ void AppendAccessibilityRelation(Dali::Actor control, Actor destination, Dali::A auto object = controlDataImpl->GetAccessibilityObject(destination); if(object) { - controlDataImpl->mAccessibilityRelations[index].push_back(object->GetAddress()); + controlDataImpl->mAccessibilityRelations[index].push_back(object); } } } @@ -215,15 +215,14 @@ void RemoveAccessibilityRelation(Dali::Actor control, Actor destination, Dali::A return; } - auto address = object->GetAddress(); - auto& targets = controlDataImpl->mAccessibilityRelations[index]; for(auto i = 0u; i < targets.size(); ++i) { - if(targets[i].ToString() == address.ToString()) + if(targets[i] == object) { - targets[i] = targets.back(); - targets.erase(targets.end() - 1); + std::swap(targets[i], targets.back()); + targets.pop_back(); + --i; } } } @@ -233,8 +232,23 @@ std::vector> GetAccessibilityRelations(Dali: { if(auto controlDataImpl = GetControlImplementation(control)) { - return controlDataImpl->mAccessibilityRelations; + auto& relations = controlDataImpl->mAccessibilityRelations; + + std::vector> result(relations.size()); + + // Map every Accessible* to its Address + for(std::size_t i = 0; i < relations.size(); ++i) + { + auto& relation = relations[i]; + + std::transform(relation.begin(), relation.end(), std::back_inserter(result[i]), [](auto* x) { + return x->GetAddress(); + }); + } + + return result; } + return {}; }