X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Fcontrol-accessible.cpp;h=c4ad881a8fb1499993bd9fcd0db6abf88fc76f00;hb=acfb5074bd70ca8484f429086857e3153f01466a;hp=5b9725aca0eb52907dcc02131833cb16a042e3d0;hpb=c6bd5643e3b6ea622050a4a053f37999a243bd5e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/devel-api/controls/control-accessible.cpp b/dali-toolkit/devel-api/controls/control-accessible.cpp index 5b9725a..c4ad881 100644 --- a/dali-toolkit/devel-api/controls/control-accessible.cpp +++ b/dali-toolkit/devel-api/controls/control-accessible.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -69,33 +69,6 @@ static Dali::Actor CreateHighlightIndicatorActor() ControlAccessible::ControlAccessible(Dali::Actor self) : ActorAccessible(self) { - auto control = Toolkit::Control::DownCast(self); - - Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); - Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); - - 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; - } - - if(index == DevelControl::Property::ACCESSIBILITY_NAME || (index == GetNamePropertyIndex() && controlImpl.mAccessibilityName.empty())) - { - if(controlImpl.mAccessibilityGetNameSignal.Empty()) - { - Emit(Dali::Accessibility::ObjectPropertyChangeEvent::NAME); - } - } - - if(index == DevelControl::Property::ACCESSIBILITY_DESCRIPTION || (index == GetDescriptionPropertyIndex() && controlImpl.mAccessibilityDescription.empty())) - { - if(controlImpl.mAccessibilityGetDescriptionSignal.Empty()) - { - Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION); - } - } - }); } std::string ControlAccessible::GetName() const @@ -220,7 +193,7 @@ Dali::Accessibility::States ControlAccessible::CalculateStates() states[State::HIGHLIGHTABLE] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE); states[State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self; states[State::ENABLED] = true; - states[State::SENSITIVE] = self.GetProperty(Actor::Property::SENSITIVE); + states[State::SENSITIVE] = (Dali::DevelActor::IsHittable(self) && Dali::DevelActor::GetTouchRequired(self)); states[State::VISIBLE] = self.GetProperty(Actor::Property::VISIBLE); states[State::SHOWING] = IsShowing(); states[State::DEFUNCT] = !self.GetProperty(Dali::DevelActor::Property::CONNECTED_TO_SCENE).Get(); @@ -314,6 +287,22 @@ void ControlAccessible::UnregisterPositionPropertyNotification() controlImpl.UnregisterAccessibilityPositionPropertyNotification(); } +void ControlAccessible::RegisterPropertySetSignal() +{ + auto control = Dali::Toolkit::Control::DownCast(Self()); + Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); + Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); + controlImpl.RegisterAccessibilityPropertySetSignal(); +} + +void ControlAccessible::UnregisterPropertySetSignal() +{ + auto control = Dali::Toolkit::Control::DownCast(Self()); + Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); + Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); + controlImpl.UnregisterAccessibilityPropertySetSignal(); +} + bool ControlAccessible::GrabHighlight() { Dali::Actor self = Self(); @@ -363,6 +352,7 @@ bool ControlAccessible::GrabHighlight() SetCurrentlyHighlightedActor(self); EmitHighlighted(true); RegisterPositionPropertyNotification(); + RegisterPropertySetSignal(); return true; } @@ -378,6 +368,7 @@ bool ControlAccessible::ClearHighlight() if(GetCurrentlyHighlightedActor() == self) { + UnregisterPropertySetSignal(); UnregisterPositionPropertyNotification(); self.Remove(mCurrentHighlightActor.GetHandle()); mCurrentHighlightActor = {};