diff --git a/src/Tizen.NUI.Components/Controls/Menu.cs b/src/Tizen.NUI.Components/Controls/Menu.cs index 78c5d642532..151bcba545e 100755 --- a/src/Tizen.NUI.Components/Controls/Menu.cs +++ b/src/Tizen.NUI.Components/Controls/Menu.cs @@ -517,7 +517,8 @@ public void Post(Window window = null) CalculateSizeAndPosition(); RegisterDefaultLabel(); - NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible, AccessibilityState.Showing), AccessibilityStatesNotifyMode.Recursive); + NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible), AccessibilityStatesNotifyMode.Recursive); + NotifyAccessibilityPresentationChanged(true); } /// @@ -529,7 +530,8 @@ public void Dismiss() { Hide(); UnregisterDefaultLabel(); - NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible, AccessibilityState.Showing), AccessibilityStatesNotifyMode.Recursive); + NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible), AccessibilityStatesNotifyMode.Recursive); + NotifyAccessibilityPresentationChanged(false); Dispose(); } diff --git a/src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs b/src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs index 01a501d75f2..fe3bb17b501 100755 --- a/src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs +++ b/src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs @@ -1127,14 +1127,16 @@ private void NotifyAccessibilityStatesChangeOfPages(Page disappearedPage, Page a View curHighlightedView = Accessibility.Accessibility.GetCurrentlyHighlightedView(); if (curHighlightedView != null) { - curHighlightedView.NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible, AccessibilityState.Showing), AccessibilityStatesNotifyMode.Single); + curHighlightedView.NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible), AccessibilityStatesNotifyMode.Single); + curHighlightedView.NotifyAccessibilityPresentationChanged(false); } } if (appearedPage != null) { appearedPage.RegisterDefaultLabel(); - appearedPage.NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible, AccessibilityState.Showing), AccessibilityStatesNotifyMode.Single); + appearedPage.NotifyAccessibilityStatesChange(new AccessibilityStates(AccessibilityState.Visible), AccessibilityStatesNotifyMode.Single); + appearedPage.NotifyAccessibilityPresentationChanged(true); } } diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs b/src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs index be02ce6daa0..c37574e59a8 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs @@ -77,6 +77,31 @@ internal static partial class ControlDevel [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_GetAccessibilityStates")] public static extern ulong DaliToolkitDevelControlGetAccessibilityStates(HandleRef arg1); + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_GetAccessibilityStates")] + public static extern uint DaliToolkitControlGetAccessibilityStates(HandleRef arg1); + + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_SetAccessibilityStates")] + public static extern void DaliToolkitControlSetAccessibilityStates(HandleRef arg1, uint arg2); + + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_AddAccessibilityState")] + public static extern void DaliToolkitControlAddAccessibilityState(HandleRef arg1, int arg2); + + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_RemoveAccessibilityState")] + public static extern void DaliToolkitControlRemoveAccessibilityState(HandleRef arg1, int arg2); + + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_SetAccessibilityState")] + public static extern void DaliToolkitControlSetAccessibilityState(HandleRef arg1, int arg2, int arg3); + + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_Control_HasAccessibilityState")] + [return: MarshalAs(UnmanagedType.U1)] + public static extern bool DaliToolkitControlHasAccessibilityState(HandleRef arg1, int arg2); + [EditorBrowsable(EditorBrowsableState.Never)] [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Toolkit_DevelControl_NotifyAccessibilityStateChange")] public static extern IntPtr DaliToolkitDevelControlNotifyAccessibilityStateChange(HandleRef arg1, ulong arg2, int arg3); @@ -89,6 +114,10 @@ internal static partial class ControlDevel [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_EmitAccessibilityStateChangedEvent")] public static extern IntPtr DaliAccessibilityEmitAccessibilityStateChangedEvent(HandleRef arg1, int arg2_state, int arg3); + [EditorBrowsable(EditorBrowsableState.Never)] + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_NotifyAccessibilityPresentationChanged")] + public static extern void DaliAccessibilityNotifyAccessibilityPresentationChanged(HandleRef arg1, int arg2_presented); + [EditorBrowsable(EditorBrowsableState.Never)] [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_EmitTextInsertedEvent")] public static extern IntPtr DaliAccessibilityEmitTextInsertedEvent(HandleRef arg1, int arg2_pos, int arg3_len, string arg3_content); diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.ViewProperty.cs b/src/Tizen.NUI/src/internal/Interop/Interop.ViewProperty.cs index 43a1b44f783..c0f57f8be22 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.ViewProperty.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.ViewProperty.cs @@ -93,6 +93,7 @@ internal static partial class ViewProperty [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_View_Property_AUTOMATION_ID_get")] public static extern int AutomationIdGet(); + // Legacy compatibility only. Do not use for AccessibilityStatesV2; the native symbol logs and returns INVALID_INDEX. [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_View_Property_ACCESSIBILITY_STATES_get")] public static extern int AccessibilityStateGet(); diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs index 674d4c4db51..fb4af0b78bd 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs @@ -322,6 +322,17 @@ public void EmitAccessibilityStateChangedEvent(AccessibilityState state, bool eq if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } + /// + /// Notifies accessibility clients that this view's presentation state changed. + /// + /// True when this view is presented, otherwise false + [EditorBrowsable(EditorBrowsableState.Never)] + public void NotifyAccessibilityPresentationChanged(bool presented) + { + Interop.ControlDevel.DaliAccessibilityNotifyAccessibilityPresentationChanged(SwigCPtr, Convert.ToInt32(presented)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + /// /// Emits accessibility text inserted event. /// diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityV2.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityV2.cs index dfe3d5d999a..f1dd2f7c269 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityV2.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityV2.cs @@ -38,7 +38,7 @@ public partial class View [EditorBrowsable(EditorBrowsableState.Never)] public AccessibilityStatesV2 GetAccessibilityStatesV2() { - return (AccessibilityStatesV2)Object.InternalGetPropertyInt(SwigCPtr, Property.AccessibilityState); + return (AccessibilityStatesV2)Interop.ControlDevel.DaliToolkitControlGetAccessibilityStates(SwigCPtr); } /// @@ -48,7 +48,7 @@ public AccessibilityStatesV2 GetAccessibilityStatesV2() [EditorBrowsable(EditorBrowsableState.Never)] public void SetAccessibilityStatesV2(AccessibilityStatesV2 states) { - Object.InternalSetPropertyInt(SwigCPtr, Property.AccessibilityState, (int)states); + Interop.ControlDevel.DaliToolkitControlSetAccessibilityStates(SwigCPtr, (uint)states); } /// @@ -70,7 +70,7 @@ public void ChangeAccessibilityStatesV2(AccessibilityStatesV2 states, bool beAdd current = current.Remove(states); } - Object.InternalSetPropertyInt(SwigCPtr, Property.AccessibilityState, (int)current); + Interop.ControlDevel.DaliToolkitControlSetAccessibilityStates(SwigCPtr, (uint)current); } /// diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewEnum.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewEnum.cs index 0c40f5ebb05..446707bfc33 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewEnum.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewEnum.cs @@ -314,7 +314,8 @@ internal class Property internal static readonly int DispatchKeyEvents = Interop.ViewProperty.DispatchKeyEventsGet(); internal static readonly int AccessibilityHidden = Interop.ViewProperty.AccessibilityHiddenGet(); internal static readonly int AutomationId = Interop.ViewProperty.AutomationIdGet(); - internal static readonly int AccessibilityState = Interop.ViewProperty.AccessibilityStateGet(); + // Legacy compatibility only. AccessibilityStatesV2 is handled by Control accessibility state methods. + internal const int AccessibilityState = Tizen.NUI.Property.InvalidIndex; internal static readonly int AccessibilityIsModal = Interop.ViewProperty.AccessibilityIsModalGet(); internal static readonly int AccessibilityValue = Interop.ViewProperty.AccessibilityValueGet(); internal static readonly int AccessibilityScrollable = Interop.ViewProperty.AccessibilityScrollableGet(); diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs index 0e5ff696619..b98aab003c5 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs @@ -417,12 +417,7 @@ public void Show() #if !PROFILE_TV if (GetAccessibilityStates()[AccessibilityState.Modal]) { - RegisterDefaultLabel(); - - if (Accessibility.Accessibility.IsEnabled) - { - EmitAccessibilityStateChangedEvent(AccessibilityState.Showing, true); - } + NotifyAccessibilityPresentationChanged(true); } #endif } @@ -443,12 +438,7 @@ public void Hide() #if !PROFILE_TV if (GetAccessibilityStates()[AccessibilityState.Modal]) { - UnregisterDefaultLabel(); - - if (Accessibility.Accessibility.IsEnabled) - { - EmitAccessibilityStateChangedEvent(AccessibilityState.Showing, false); - } + NotifyAccessibilityPresentationChanged(false); } #endif }