[NUI][AT-SPI] Bindings for ScrollToChild
authorArtur Świgoń <a.swigon@samsung.com>
Tue, 18 May 2021 15:48:34 +0000 (17:48 +0200)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Mon, 14 Jun 2021 10:12:19 +0000 (19:12 +0900)
src/Tizen.NUI.Components/Controls/RecyclerView/CollectionView.cs
src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs

index 35d639e..89a36eb 100755 (executable)
@@ -840,6 +840,28 @@ namespace Tizen.NUI.Components
             }
         }
 
+
+        /// <summary>
+        /// Scroll to specified item
+        /// </summary>
+        /// <remarks>
+        /// Make sure that the item that is about to receive the accessibility highlight is visible.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override bool AccessibilityScrollToChild(View child)
+        {
+            foreach (RecyclerViewItem item in ContentContainer.Children.Where((item) => item is RecyclerViewItem))
+            {
+                if (child == item)
+                {
+                    ScrollToIndex(item.Index);
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
         // Realize and Decorate the item.
         internal override RecyclerViewItem RealizeItem(int index)
         {
index 5ea9ee2..e4b0a26 100755 (executable)
@@ -319,6 +319,11 @@ namespace Tizen.NUI
                 public delegate bool AccessibilityDeleteText(int startPosition, int endPosition);
                 [EditorBrowsable(EditorBrowsableState.Never)]
                 public AccessibilityDeleteText DeleteText; // 26
+
+                [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+                public delegate bool AccessibilityScrollToChild(IntPtr child);
+                [EditorBrowsable(EditorBrowsableState.Never)]
+                public AccessibilityScrollToChild ScrollToChild; // 27
             }
 
             [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_SetAccessibilityConstructor_NUI")]
index 3bd1f76..9965262 100755 (executable)
@@ -504,6 +504,12 @@ namespace Tizen.NUI.BaseComponents
                     InsertText = (startPosition, text) => AccessibilityInsertText(startPosition, Marshal.PtrToStringAnsi(text)),
                     SetTextContents = (newContents) => AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents)),
                     DeleteText = (startPosition, endPosition) => AccessibilityDeleteText(startPosition, endPosition),
+                    ScrollToChild = (child) => {
+                        using (var view = new View(child,  true))
+                        {
+                            return AccessibilityScrollToChild(view);
+                        }
+                    },
                 };
 
                 accessibilityDelegatePtr = Marshal.AllocHGlobal(size);
@@ -747,5 +753,11 @@ namespace Tizen.NUI.BaseComponents
         {
             return false;
         }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual bool AccessibilityScrollToChild(View child)
+        {
+            return false;
+        }
     }
 }