return nullptr;
}
-void Control::Impl::CulledChangedCallback(PropertyNotification& p)
-{
- if(Dali::Accessibility::IsUp())
- {
- auto self = Dali::Actor::DownCast(p.GetTarget());
- Dali::Accessibility::Accessible::Get(self)->EmitShowing(!self.GetProperty(DevelActor::Property::CULLED).Get<bool>());
- }
-}
-
-void Control::Impl::AccessibilityRegister()
-{
- if(!accessibilityNotificationSet)
- {
- accessibilityNotificationCulled = mControlImpl.Self().AddPropertyNotification(DevelActor::Property::CULLED, LessThanCondition(0.5f));
- accessibilityNotificationCulled.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
- accessibilityNotificationCulled.NotifySignal().Connect(&Control::Impl::CulledChangedCallback);
-
- accessibilityNotificationSet = true;
- }
-}
-
-void Control::Impl::AccessibilityDeregister(bool remove)
-{
- if(accessibilityNotificationSet)
- {
- accessibilityNotificationCulled.NotifySignal().Disconnect(&Control::Impl::CulledChangedCallback);
- if(remove)
- {
- mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationCulled);
- }
- accessibilityNotificationCulled.Reset();
- accessibilityNotificationCulled = {};
- accessibilityNotificationSet = false;
- }
-}
-
} // namespace Internal
} // namespace Toolkit
static Dali::Accessibility::Accessible* GetAccessibilityObject(Dali::Actor actor);
Dali::Accessibility::Accessible* GetAccessibilityObject();
- void AccessibilityRegister();
- void AccessibilityDeregister(bool remove);
-
std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Actor)> accessibilityConstructor;
std::unique_ptr<Dali::Accessibility::Accessible> accessibilityObject;
- Dali::PropertyNotification accessibilityNotificationCulled;
- bool accessibilityNotificationSet = false;
- static void CulledChangedCallback(PropertyNotification&);
};
} // namespace Internal
// The clipping renderer is only created if required.
CreateClippingRenderer(*this);
-
- mImpl->AccessibilityRegister();
}
void Control::OnSceneDisconnection()
{
- mImpl->AccessibilityDeregister(true);
mImpl->OnSceneDisconnection();
}