From: Shinwoo Kim Date: Wed, 24 Nov 2021 12:52:27 +0000 (+0000) Subject: Merge "[ATSPI] Check parents to define SHOWING state" into devel/master X-Git-Tag: dali_2.1.0~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=f382cfe22850eb6a81d15da5c59401670d9c4646;hp=70468ae7ba6b75df1db1063e9b3fcf0313ffd787 Merge "[ATSPI] Check parents to define SHOWING state" into devel/master --- diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp index 423893a..12abee1 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp @@ -128,5 +128,16 @@ int UtcDaliAccessibilityCheckShowingState(void) states = q->GetStates(); DALI_TEST_EQUALS((int) states[Dali::Accessibility::State::SHOWING], (int) false, TEST_LOCATION); + // Make SHOWING parent invisible + parentButton.SetProperty(Actor::Property::VISIBLE, false); + + application.SendNotification(); + application.Render(16); + + q = Dali::Accessibility::Accessible::Get(buttonA); + DALI_TEST_CHECK(q); + states = q->GetStates(); + DALI_TEST_EQUALS((int) states[Dali::Accessibility::State::SHOWING], (int) false, TEST_LOCATION); + END_TEST; -} \ No newline at end of file +} diff --git a/dali-toolkit/devel-api/controls/accessible-impl.cpp b/dali-toolkit/devel-api/controls/accessible-impl.cpp index 9f6f4f9..1cf9a26 100644 --- a/dali-toolkit/devel-api/controls/accessible-impl.cpp +++ b/dali-toolkit/devel-api/controls/accessible-impl.cpp @@ -36,7 +36,8 @@ namespace Dali::Toolkit::DevelControl { - +namespace +{ static std::string GetLocaleText(std::string string, const char *domain = "dali-toolkit") { #ifdef DGETTEXT_ENABLED @@ -48,6 +49,23 @@ static std::string GetLocaleText(std::string string, const char *domain = "dali- #endif } +static Dali::Actor CreateHighlightIndicatorActor() +{ + std::string focusBorderImagePath(AssetManager::GetDaliImagePath()); + focusBorderImagePath += "/keyboard_focus.9.png"; + + // Create the default if it hasn't been set and one that's shared by all the + // keyboard focusable actors + auto actor = Toolkit::ImageView::New(focusBorderImagePath); + actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + + DevelControl::AppendAccessibilityAttribute(actor, "highlight", std::string()); + actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false); + + return actor; +} +} // unnamed namespace + AccessibleImpl::AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, bool modal) : mSelf(self), mIsModal(modal) @@ -203,7 +221,7 @@ std::string AccessibleImpl::GetLocalizedRoleName() bool AccessibleImpl::IsShowing() { Dali::Actor self = Self(); - if(self.GetProperty(Dali::DevelActor::Property::CULLED).Get() || !self.GetCurrentProperty(Actor::Property::VISIBLE)) + if(!self.GetProperty(Actor::Property::VISIBLE) || self.GetProperty(Actor::Property::WORLD_COLOR).a == 0 || self.GetProperty(Dali::DevelActor::Property::CULLED)) { return false; } @@ -219,6 +237,10 @@ bool AccessibleImpl::IsShowing() while(parent) { auto control = Dali::Toolkit::Control::DownCast(parent->Self()); + if(!control.GetProperty(Actor::Property::VISIBLE)) + { + return false; + } auto clipMode = control.GetProperty(Actor::Property::CLIPPING_MODE).Get(); auto parentExtent = parent->GetExtents(Dali::Accessibility::CoordinateType::WINDOW); if ((clipMode != ClippingMode::DISABLED) && !parentExtent.Intersects(childExtent)) @@ -250,7 +272,7 @@ Dali::Accessibility::States AccessibleImpl::CalculateStates() state[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self; state[Dali::Accessibility::State::ENABLED] = true; state[Dali::Accessibility::State::SENSITIVE] = true; - state[Dali::Accessibility::State::VISIBLE] = true; + state[Dali::Accessibility::State::VISIBLE] = self.GetProperty(Actor::Property::VISIBLE); if(mIsModal) { @@ -335,22 +357,6 @@ bool AccessibleImpl::GrabFocus() return Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self()); } -static Dali::Actor CreateHighlightIndicatorActor() -{ - std::string focusBorderImagePath(AssetManager::GetDaliImagePath()); - focusBorderImagePath += "/keyboard_focus.9.png"; - - // Create the default if it hasn't been set and one that's shared by all the - // keyboard focusable actors - auto actor = Toolkit::ImageView::New(focusBorderImagePath); - actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); - - DevelControl::AppendAccessibilityAttribute(actor, "highlight", std::string()); - actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false); - - return actor; -} - void AccessibleImpl::ScrollToSelf() { auto* child = this;