[AT-SPI] Notify parent Accessible when ACCESSIBILITY_HIDDEN is set 74/268674/7
authorArtur Świgoń <a.swigon@samsung.com>
Wed, 29 Dec 2021 08:24:26 +0000 (09:24 +0100)
committerArtur Świgoń <a.swigon@samsung.com>
Tue, 18 Jan 2022 10:22:01 +0000 (11:22 +0100)
Change-Id: I61184a56b2529a2eba19fdf09676f606834f0fb7

automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp
dali-toolkit/internal/controls/control/control-data-impl.cpp

index 643b552..2bbdcc8 100644 (file)
@@ -148,19 +148,26 @@ int utcDaliAccessibilityHidden(void)
 {
   ToolkitTestApplication application;
 
-  auto  control    = Toolkit::Control::New();
-  auto* accessible = Dali::Accessibility::Accessible::Get(control);
+  auto  parent            = Toolkit::Control::New();
+  auto* parentAccessible  = Accessibility::Accessible::Get(parent);
+  auto  control           = Toolkit::Control::New();
+  auto* controlAccessible = Accessibility::Accessible::Get(control);
+
+  parent.Add(control);
 
   // Check not hidden
-  DALI_TEST_CHECK(accessible);
-  DALI_TEST_CHECK(!accessible->IsHidden());
+  DALI_TEST_CHECK(parentAccessible && controlAccessible);
+  DALI_TEST_CHECK(!controlAccessible->IsHidden());
   DALI_TEST_CHECK(!control.GetProperty<bool>(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN));
+  DALI_TEST_EQUALS(parentAccessible->GetChildCount(), 1u, TEST_LOCATION);
+  DALI_TEST_EQUALS(parentAccessible->GetChildAtIndex(0), controlAccessible, TEST_LOCATION);
 
   control.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN, true);
 
   // Check hidden
-  DALI_TEST_CHECK(accessible->IsHidden());
+  DALI_TEST_CHECK(controlAccessible->IsHidden());
   DALI_TEST_CHECK(control.GetProperty<bool>(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN));
+  DALI_TEST_EQUALS(parentAccessible->GetChildCount(), 0u, TEST_LOCATION);
 
   END_TEST;
 }
index e3cea92..bfe280a 100644 (file)
@@ -1377,6 +1377,13 @@ void Control::Impl::SetProperty(BaseObject* object, Property::Index index, const
         if(value.Get(hidden))
         {
           controlImpl.mImpl->mAccessibilityHidden = hidden;
+
+          auto* accessible = controlImpl.mImpl->GetAccessibilityObject();
+          auto* parent     = dynamic_cast<Dali::Accessibility::ActorAccessible*>(accessible->GetParent());
+          if (parent)
+          {
+            parent->OnChildrenChanged();
+          }
         }
         break;
       }