namespace
{
-class NonControlAccessible : public virtual Accessible, public virtual Collection, public virtual Component
+class AdaptorAccessible : public virtual Accessible, public virtual Collection, public virtual Component
{
protected:
Dali::WeakHandle<Dali::Actor> mSelf;
{
auto handle = mSelf.GetHandle();
- // NonControlAccessible is deleted on ObjectDestroyedSignal
+ // AdaptorAccessible is deleted on ObjectDestroyedSignal
// for the respective actor (see `nonControlAccessibles`).
DALI_ASSERT_ALWAYS(handle);
}
public:
- NonControlAccessible(Dali::Actor actor, bool isRoot)
+ AdaptorAccessible(Dali::Actor actor, bool isRoot)
: mSelf(actor),
mRoot(isRoot)
{
States state;
if(mRoot)
{
+ auto window = Dali::DevelWindow::Get(Self());
+ auto visible = window.IsVisible();
state[State::ENABLED] = true;
state[State::SENSITIVE] = true;
- state[State::SHOWING] = true;
+ state[State::SHOWING] = visible;
state[State::VISIBLE] = true;
- state[State::ACTIVE] = true;
+ state[State::ACTIVE] = visible;
}
else
{
{
return {};
}
-};
-using NonControlAccessiblesType = std::unordered_map<const Dali::RefObject*, std::unique_ptr<NonControlAccessible> >;
+ Dali::Actor GetInternalActor() override
+ {
+ return mSelf.GetHandle();
+ }
+}; // AdaptorAccessible
-NonControlAccessiblesType nonControlAccessibles;
+using AdaptorAccessiblesType = std::unordered_map<const Dali::RefObject*, std::unique_ptr<AdaptorAccessible> >;
+
+// Save RefObject from an Actor in Accessible::Get()
+AdaptorAccessiblesType gAdaptorAccessibles;
std::function<Accessible*(Dali::Actor)> convertingFunctor = [](Dali::Actor) -> Accessible* {
return nullptr;
objectRegistry = registry;
}
-void Accessible::RegisterControlAccessibilityGetter(std::function<Accessible*(Dali::Actor)> functor)
+void Accessible::RegisterExternalAccessibleGetter(std::function<Accessible*(Dali::Actor)> functor)
{
convertingFunctor = functor;
}
auto accessible = convertingFunctor(actor);
if(!accessible)
{
- if(nonControlAccessibles.empty() && objectRegistry)
+ if(gAdaptorAccessibles.empty() && objectRegistry)
{
objectRegistry.ObjectDestroyedSignal().Connect([](const Dali::RefObject* obj) {
- nonControlAccessibles.erase(obj);
+ gAdaptorAccessibles.erase(obj);
});
}
- auto pair = nonControlAccessibles.emplace(&actor.GetBaseObject(), nullptr);
+ auto pair = gAdaptorAccessibles.emplace(&actor.GetBaseObject(), nullptr);
if(pair.second)
{
- pair.first->second.reset(new NonControlAccessible(actor, isRoot));
+ pair.first->second.reset(new AdaptorAccessible(actor, isRoot));
}
accessible = pair.first->second.get();
}
+
return accessible;
}