[Tizen] (A11y) Create Accessible at Detach() only if we use it before. 74/304774/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 8 Nov 2023 13:26:12 +0000 (22:26 +0900)
committerSeoyeon Kim <seoyeon2.kim@samsung.com>
Wed, 24 Jan 2024 02:11:28 +0000 (11:11 +0900)
Detach() API called at Dispose() timing. So we don't need to re-create
Accessible that timing if we never use Accessible item previously.

This patch have dependency with below pathces :

https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-toolkit/+/304773/

Change-Id: I55b40951ec792c52c82b53e3746c2a876e52dbe3
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-csharp-binder/src/nui-view-accessible.cpp

index 8aad34e..7927948 100644 (file)
@@ -738,12 +738,23 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_Accessibility_DetachAccessibleObject(Dal
   GUARD_ON_NULL_RET(arg1_control);
 
   try_catch(([&]() {
-    auto* actorAccessible = Dali::Accessibility::Accessible::Get(*arg1_control);
-    auto* viewAccessible  = dynamic_cast<NUIViewAccessible*>(actorAccessible);
-
-    if(viewAccessible)
+    Dali::Toolkit::Control control = *arg1_control;
+    if(DALI_LIKELY(control))
     {
-      viewAccessible->Detach();
+      // Call detach only if accessible was created before.
+      if(DevelControl::IsAccessibleCreated(control))
+      {
+        auto* actorAccessible = Dali::Accessibility::Accessible::Get(control);
+        auto* viewAccessible  = dynamic_cast<NUIViewAccessible*>(actorAccessible);
+
+        if(viewAccessible)
+        {
+          viewAccessible->Detach();
+        }
+      }
+
+      // Make that we will not create new NUIViewAccessible anymore.
+      DevelControl::EnableCreateAccessible(control, false);
     }
   }));
 }