2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.ComponentModel;
20 using System.Runtime.InteropServices;
23 namespace Tizen.NUI.BaseComponents
26 /// Address represents an unique object address on accessibility bus.
28 [EditorBrowsable(EditorBrowsableState.Never)]
32 /// Creates an initialized Address.
34 /// <param name="bus">Accessibility bus</param>
35 /// <param name="path">Accessibility path</param>
36 [EditorBrowsable(EditorBrowsableState.Never)]
37 public Address(string bus, string path)
44 /// Gets or sets accessibility bus.
46 [EditorBrowsable(EditorBrowsableState.Never)]
47 public string Bus { get; set; }
50 /// Gets or sets accessibility path.
52 [EditorBrowsable(EditorBrowsableState.Never)]
53 public string Path { get; set; }
57 /// AddressCollection.
59 [EditorBrowsable(EditorBrowsableState.Never)]
60 public class AddressCollection : SafeHandle
63 /// Creates an initialized AddressCollection.
65 /// <param name="collection">Initialized AddressCollection</param>
66 [EditorBrowsable(EditorBrowsableState.Never)]
67 public AddressCollection(IntPtr collection) : base(collection, true)
72 /// Checks whether this handle is invalid or not.
74 [EditorBrowsable(EditorBrowsableState.Never)]
75 public override bool IsInvalid
79 return this.handle == IntPtr.Zero;
84 /// Gets the size of accessibility relation.
86 /// <param name="relation">Accessibility relation</param>
87 /// <returns>The size of relation, which means the number of elements</returns>
88 [EditorBrowsable(EditorBrowsableState.Never)]
89 public uint GetRelationSize(AccessibilityRelationType relation)
91 uint result = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsRelationSize(this, Convert.ToInt32(relation));
92 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
97 /// Gets Address object using contained bus and path.
99 /// <param name="relation">Accessibility relation</param>
100 /// <param name="position">Position</param>
101 /// <returns>Accessibility Adress</returns>
102 [EditorBrowsable(EditorBrowsableState.Never)]
103 public Address GetAddressAt(AccessibilityRelationType relation, int position)
105 var bus = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsAt(this, Convert.ToInt32(relation), position, 0);
106 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
108 var path = Interop.ControlDevel.DaliToolkitDevelControlAccessibilityRelationsAt(this, Convert.ToInt32(relation), position, 1);
109 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
111 return new Address(bus, path);
115 /// Releases handle itself.
117 /// <returns>true when released successfully.</returns>
118 [EditorBrowsable(EditorBrowsableState.Never)]
119 protected override bool ReleaseHandle()
121 Interop.ControlDevel.DaliToolkitDevelControlDeleteAccessibilityRelations(handle);
122 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
123 this.SetHandle(IntPtr.Zero);
129 /// AccessibilityRange is used to store data related with Text.
131 [EditorBrowsable(EditorBrowsableState.Never)]
132 public class AccessibilityRange
135 /// Start position in stored text.
137 public int StartOffset { get; set; } = 0;
140 /// End position in stored text.
142 public int EndOffset { get; set; } = 0;
145 /// Text content in stored text.
147 public string Content { get; set; } = "";
151 /// View is the base class for all views.
153 /// <since_tizen> 3 </since_tizen>
154 public partial class View
156 ///////////////////////////////////////////////////////////////////
157 // ****************** Accessibility Attributes ****************** //
158 ///////////////////////////////////////////////////////////////////
161 /// Adds or modifies the value matched with given key.
164 /// Modification takes place if key was previously set.
166 /// <param name="key">The key to insert</param>
167 /// <param name="value">The value to insert</param>
168 [EditorBrowsable(EditorBrowsableState.Never)]
169 public void AppendAccessibilityAttribute(string key, string value)
171 Interop.ControlDevel.DaliToolkitDevelControlAppendAccessibilityAttribute(SwigCPtr, key, value);
172 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
176 /// Erases a key with its value from accessibility attributes.
178 /// <param name="key">The key to remove</param>
179 [EditorBrowsable(EditorBrowsableState.Never)]
180 public void RemoveAccessibilityAttribute(string key)
182 Interop.ControlDevel.DaliToolkitDevelControlRemoveAccessibilityAttribute(SwigCPtr, key);
183 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
187 /// Clears accessibility attributes.
189 [EditorBrowsable(EditorBrowsableState.Never)]
190 public void ClearAccessibilityAttributes()
192 Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityAttributes(SwigCPtr);
193 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
196 ///////////////////////////////////////////////////////////////////
197 // ************************** Highlight ************************ //
198 ///////////////////////////////////////////////////////////////////
201 /// Clears accessibility highlight.
203 /// <returns>True if cleared, otherwise false when it is not possible</returns>
204 [EditorBrowsable(EditorBrowsableState.Never)]
205 public bool ClearAccessibilityHighlight()
207 bool result = Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityHighlight(SwigCPtr);
208 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
213 /// Grabs accessibility highlight.
215 /// <returns>True if cleared, otherwise false when it is not possible</returns>
216 [EditorBrowsable(EditorBrowsableState.Never)]
217 public bool GrabAccessibilityHighlight()
219 bool result = Interop.ControlDevel.DaliToolkitDevelControlGrabAccessibilityHighlight(SwigCPtr);
220 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
225 /// Flag to check whether this view is highlighted or not.
227 [EditorBrowsable(EditorBrowsableState.Never)]
228 protected bool IsHighlighted
232 using (View view = Accessibility.Accessibility.Instance.GetCurrentlyHighlightedView())
239 ///////////////////////////////////////////////////////////////////
240 // ****************** Accessibility Relations ******************* //
241 ///////////////////////////////////////////////////////////////////
244 /// Creates relation between objects.
246 /// <param name="second">Object which will be in relation.</param>
247 /// <param name="relation">Relation type.</param>
248 /// <exception cref="ArgumentNullException">You must pass valid object. NULL could not be in relation.</exception>
249 [EditorBrowsable(EditorBrowsableState.Never)]
250 public void AppendAccessibilityRelation(View second, AccessibilityRelationType relation)
254 throw new ArgumentNullException(nameof(second));
257 Interop.ControlDevel.DaliToolkitDevelControlAppendAccessibilityRelation(SwigCPtr, second.SwigCPtr, (int)relation);
258 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
262 /// Removes accessibility relation.
264 /// <param name="second">Object which will be removed in relation</param>
265 /// <param name="relation">Relation type</param>
266 [EditorBrowsable(EditorBrowsableState.Never)]
267 public void RemoveAccessibilityRelation(View second, AccessibilityRelationType relation)
271 throw new ArgumentNullException(nameof(second));
274 Interop.ControlDevel.DaliToolkitDevelControlRemoveAccessibilityRelation(SwigCPtr, second.SwigCPtr, (int)relation);
275 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
279 /// Removes all previously appended relations.
281 [EditorBrowsable(EditorBrowsableState.Never)]
282 public void ClearAccessibilityRelations()
284 Interop.ControlDevel.DaliToolkitDevelControlClearAccessibilityRelations(SwigCPtr);
285 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
289 /// Gets accessibility collection connected with the current object.
291 /// <returns>AddressCollection</returns>
292 [EditorBrowsable(EditorBrowsableState.Never)]
293 public AddressCollection GetAccessibilityRelations()
295 var result = new AddressCollection(Interop.ControlDevel.DaliToolkitDevelControlNewGetAccessibilityRelations(SwigCPtr));
296 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
300 ///////////////////////////////////////////////////////////////////
301 // ********************* ReadingInfoType *********************** //
302 ///////////////////////////////////////////////////////////////////
305 /// Sets accessibility reading information.
307 /// <param name="type">Reading information type</param>
308 [EditorBrowsable(EditorBrowsableState.Never)]
309 public void SetAccessibilityReadingInfoTypes(AccessibilityReadingInfoTypes type)
311 Interop.ControlDevel.DaliToolkitDevelControlSetAccessibilityReadingInfoTypes(SwigCPtr, (int)type);
312 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
316 /// Gets accessibility reading information.
318 /// <returns>Reading information type</returns>
319 [EditorBrowsable(EditorBrowsableState.Never)]
320 public AccessibilityReadingInfoTypes GetAccessibilityReadingInfoTypes()
322 AccessibilityReadingInfoTypes result = (AccessibilityReadingInfoTypes)Interop.ControlDevel.DaliToolkitDevelControlGetAccessibilityReadingInfoTypes(SwigCPtr);
323 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
327 ///////////////////////////////////////////////////////////////////
328 // ******************** Accessibility States ******************* //
329 ///////////////////////////////////////////////////////////////////
332 /// Notifies sending notifications about the current states to accessibility clients.
335 /// If recursive is true, all children of the Accessibility object will also re-emit the states.
337 /// <param name="states">Accessibility States</param>
338 /// <param name="recursive">Flag to point if notifications of children's state would be sent</param>
339 [EditorBrowsable(EditorBrowsableState.Never)]
340 public void NotifyAccessibilityStatesChange(AccessibilityStates states, bool recursive)
342 Interop.ControlDevel.DaliToolkitDevelControlNotifyAccessibilityStatesChange(SwigCPtr, (ulong)states, Convert.ToInt32(recursive));
343 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
347 /// Gets Accessibility States.
349 /// <returns>Accessibility States</returns>
350 [EditorBrowsable(EditorBrowsableState.Never)]
351 public AccessibilityStates GetAccessibilityStates()
353 AccessibilityStates result = (AccessibilityStates) Interop.ControlDevel.DaliToolkitDevelControlGetAccessibilityStates(SwigCPtr);
354 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
358 ///////////////////////////////////////////////////////////////////
359 // ************************ Accessible ************************* //
360 ///////////////////////////////////////////////////////////////////
363 /// Emits accessibility property changed event.
365 /// <param name="changeEvent">Property changed event</param>
366 [EditorBrowsable(EditorBrowsableState.Never)]
367 public void EmitAccessibilityEvent(AccessibilityPropertyChangeEvent changeEvent)
369 Interop.ControlDevel.DaliAccessibilityEmitAccessibilityEvent(SwigCPtr, Convert.ToInt32(changeEvent));
370 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
374 /// Emits accessibility states changed event.
376 /// <param name="state">Accessibility state</param>
377 /// <param name="equal">True if the state is set or enabled, otherwise false</param>
378 [EditorBrowsable(EditorBrowsableState.Never)]
379 public void EmitAccessibilityStatesChangedEvent(AccessibilityStates state, bool equal)
381 Interop.ControlDevel.DaliAccessibilityEmitAccessibilityStatesChangedEvent(SwigCPtr, (ulong)state, Convert.ToInt32(equal));
382 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
386 /// Emits accessibility text inserted event.
388 /// <param name="cursorPosition">Text cursor position</param>
389 /// <param name="length">Text length</param>
390 /// <param name="content">Inserted text content</param>
391 [EditorBrowsable(EditorBrowsableState.Never)]
392 public void EmitTextInsertedEvent(int cursorPosition, int length, string content)
394 Interop.ControlDevel.DaliAccessibilityEmitTextInsertedEvent(SwigCPtr, cursorPosition, length, content);
395 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
399 /// Emits accessibility text deleted event.
401 /// <param name="cursorPosition">Text cursor position</param>
402 /// <param name="length">Text length</param>
403 /// <param name="content">Inserted text content</param>
404 [EditorBrowsable(EditorBrowsableState.Never)]
405 public void EmitTextDeletedEvent(int cursorPosition, int length, string content)
407 Interop.ControlDevel.DaliAccessibilityEmitTextDeletedEvent(SwigCPtr, cursorPosition, length, content);
408 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
412 /// Emits accessibility text cursor moved event.
414 /// <param name="cursorPosition">The new cursor position</param>
415 [EditorBrowsable(EditorBrowsableState.Never)]
416 public void EmitTextCursorMovedEvent(int cursorPosition)
418 Interop.ControlDevel.DaliAccessibilityEmitTextCursorMovedEvent(SwigCPtr, cursorPosition);
419 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
422 ///////////////////////////////////////////////////////////////////
423 // ************************** Bridge *************************** //
424 ///////////////////////////////////////////////////////////////////
427 /// Registers popup component to accessibility tree.
429 [EditorBrowsable(EditorBrowsableState.Never)]
430 public void RegisterPopup()
432 Interop.ControlDevel.DaliAccessibilityBridgeRegisterPopup(SwigCPtr);
433 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
437 /// Removes the previously added popup to accessibility tree.
439 [EditorBrowsable(EditorBrowsableState.Never)]
440 public void RemovePopup()
442 Interop.ControlDevel.DaliAccessibilityBridgeRemovePopup(SwigCPtr);
443 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
446 private IntPtr DuplicateString(string value)
448 return Interop.ControlDevel.DaliToolkitDevelControlAccessibleImplNUIDuplicateString(value ?? "");
451 private IntPtr DuplicateStates(AccessibilityStates states)
453 return Interop.ControlDevel.DaliToolkitDevelControlConvertState((ulong)states);
456 private IntPtr DuplicateRange(AccessibilityRange range)
458 return Interop.ControlDevel.DaliAccessibilityNewRange(range.StartOffset, range.EndOffset, range.Content);
461 private Interop.ControlDevel.AccessibilityDelegate accessibilityDelegate = null;
462 private IntPtr accessibilityDelegatePtr;
465 /// Sets the specific constructor for creating accessibility structure with its role and interface.
468 /// The method should be called inside OnInitialize method of all classes inheriting from View.
470 /// <param name="role">Accessibility role</param>
471 /// <param name="accessibilityInterface">Accessibility interface</param>
472 [EditorBrowsable(EditorBrowsableState.Never)]
473 public void SetAccessibilityConstructor(Role role, AccessibilityInterface accessibilityInterface = AccessibilityInterface.None)
475 var size = Marshal.SizeOf<Interop.ControlDevel.AccessibilityDelegate>();
477 if (accessibilityDelegate == null)
479 accessibilityDelegate = new Interop.ControlDevel.AccessibilityDelegate()
481 GetName = () => DuplicateString(AccessibilityGetName()),
482 GetDescription = () => DuplicateString(AccessibilityGetDescription()),
483 DoAction = (name) => AccessibilityDoAction(Marshal.PtrToStringAnsi(name)),
484 CalculateStates = () => DuplicateStates(AccessibilityCalculateStates()),
485 GetActionCount = () => AccessibilityGetActionCount(),
486 GetActionName = (index) => DuplicateString(AccessibilityGetActionName(index)),
487 ShouldReportZeroChildren = () => AccessibilityShouldReportZeroChildren(),
488 GetMinimum = () => AccessibilityGetMinimum(),
489 GetCurrent = () => AccessibilityGetCurrent(),
490 GetMaximum = () => AccessibilityGetMaximum(),
491 SetCurrent = (value) => AccessibilitySetCurrent(value),
492 GetMinimumIncrement = () => AccessibilityGetMinimumIncrement(),
493 IsScrollable = () => AccessibilityIsScrollable(),
494 GetText = (startOffset, endOffset) => DuplicateString(AccessibilityGetText(startOffset, endOffset)),
495 GetCharacterCount = () => AccessibilityGetCharacterCount(),
496 GetCursorOffset = () => AccessibilityGetCursorOffset(),
497 SetCursorOffset = (offset) => AccessibilitySetCursorOffset(offset),
498 GetTextAtOffset = (offset, boundary) => DuplicateRange(AccessibilityGetTextAtOffset(offset, (AccessibilityTextBoundary)boundary)),
499 GetSelection = (selectionNumber) => DuplicateRange(AccessibilityGetSelection(selectionNumber)),
500 RemoveSelection = (selectionNumber) => AccessibilityRemoveSelection(selectionNumber),
501 SetSelection = (selectionNumber, startOffset, endOffset) => AccessibilitySetSelection(selectionNumber, startOffset, endOffset),
502 CopyText = (startPosition, endPosition) => AccessibilityCopyText(startPosition, endPosition),
503 CutText = (startPosition, endPosition) => AccessibilityCutText(startPosition, endPosition),
504 InsertText = (startPosition, text) => AccessibilityInsertText(startPosition, Marshal.PtrToStringAnsi(text)),
505 SetTextContents = (newContents) => AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents)),
506 DeleteText = (startPosition, endPosition) => AccessibilityDeleteText(startPosition, endPosition),
507 ScrollToChild = (child) => {
508 using (var view = new View(child, true))
510 return AccessibilityScrollToChild(view);
513 GetSelectedChildrenCount = () => AccessibilityGetSelectedChildrenCount(),
514 GetSelectedChild = (selectedChildIndex) => View.getCPtr(AccessibilityGetSelectedChild(selectedChildIndex)).Handle,
515 SelectChild = (childIndex) => AccessibilitySelectChild(childIndex),
516 DeselectSelectedChild = (selectedChildIndex) => AccessibilityDeselectSelectedChild(selectedChildIndex),
517 IsChildSelected = (childIndex) => AccessibilityIsChildSelected(childIndex),
518 SelectAll = () => AccessibilitySelectAll(),
519 ClearSelection = () => AccessibilityClearSelection(),
520 DeselectChild = (childIndex) => AccessibilityDeselectChild(childIndex),
523 accessibilityDelegatePtr = Marshal.AllocHGlobal(size);
524 Marshal.StructureToPtr(accessibilityDelegate, accessibilityDelegatePtr, false);
527 Interop.ControlDevel.DaliToolkitDevelControlSetAccessibilityConstructor(SwigCPtr, (int)role, (int)accessibilityInterface, accessibilityDelegatePtr, size);
529 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
533 /// A helper method to manipulate individual bit flags (e.g. turn them on or off)
535 /// <param name="obj">An object that accumulates combination of bit flags</param>
536 /// <param name="bit">A bit flag to be operated</param>
537 /// <param name="state">A state of the bit flag to be set (0 == off, 1 == on)</param>
538 [EditorBrowsable(EditorBrowsableState.Never)]
539 static public void FlagSetter<T>(ref T obj ,T bit, bool state)
541 dynamic result = obj;
554 [EditorBrowsable(EditorBrowsableState.Never)]
555 protected override void Dispose(bool disposing)
567 if (accessibilityDelegate != null)
569 Marshal.DestroyStructure<Interop.ControlDevel.AccessibilityDelegate>(accessibilityDelegatePtr);
570 Marshal.FreeHGlobal(accessibilityDelegatePtr);
571 accessibilityDelegate = null;
574 base.Dispose(disposing);
577 [EditorBrowsable(EditorBrowsableState.Never)]
578 protected static readonly string AccessibilityActivateAction = "activate";
579 [EditorBrowsable(EditorBrowsableState.Never)]
580 protected static readonly string AccessibilityReadingSkippedAction = "ReadingSkipped";
581 [EditorBrowsable(EditorBrowsableState.Never)]
582 protected static readonly string AccessibilityReadingCancelledAction = "ReadingCancelled";
583 [EditorBrowsable(EditorBrowsableState.Never)]
584 protected static readonly string AccessibilityReadingStoppedAction = "ReadingStopped";
585 [EditorBrowsable(EditorBrowsableState.Never)]
586 protected static readonly string AccessibilityReadingPausedAction = "ReadingPaused";
587 [EditorBrowsable(EditorBrowsableState.Never)]
588 protected static readonly string AccessibilityReadingResumedAction = "ReadingResumed";
590 [EditorBrowsable(EditorBrowsableState.Never)]
591 private static readonly string[] AccessibilityActions = {
592 AccessibilityActivateAction,
593 AccessibilityReadingSkippedAction,
594 AccessibilityReadingCancelledAction,
595 AccessibilityReadingStoppedAction,
596 AccessibilityReadingPausedAction,
597 AccessibilityReadingResumedAction,
600 [EditorBrowsable(EditorBrowsableState.Never)]
601 protected virtual string AccessibilityGetName()
606 [EditorBrowsable(EditorBrowsableState.Never)]
607 protected virtual string AccessibilityGetDescription()
612 [EditorBrowsable(EditorBrowsableState.Never)]
613 protected virtual bool AccessibilityDoAction(string name)
618 [EditorBrowsable(EditorBrowsableState.Never)]
619 protected virtual AccessibilityStates AccessibilityCalculateStates()
621 AccessibilityStates states = 0;
623 FlagSetter(ref states, AccessibilityStates.Highlightable, this.AccessibilityHighlightable);
624 FlagSetter(ref states, AccessibilityStates.Focusable, this.Focusable);
625 FlagSetter(ref states, AccessibilityStates.Focused, this.State == States.Focused);
626 FlagSetter(ref states, AccessibilityStates.Highlighted, this.IsHighlighted);
627 FlagSetter(ref states, AccessibilityStates.Enabled, this.State != States.Disabled);
628 FlagSetter(ref states, AccessibilityStates.Sensitive, this.Sensitive);
629 FlagSetter(ref states, AccessibilityStates.Visible, true);
630 FlagSetter(ref states, AccessibilityStates.Showing, this.Visibility);
631 FlagSetter(ref states, AccessibilityStates.Defunct, !this.IsOnWindow);
636 [EditorBrowsable(EditorBrowsableState.Never)]
637 protected virtual int AccessibilityGetActionCount()
639 return AccessibilityActions.Length;
642 [EditorBrowsable(EditorBrowsableState.Never)]
643 protected virtual string AccessibilityGetActionName(int index)
645 if (index >= 0 && index < AccessibilityActions.Length)
647 return AccessibilityActions[index];
655 [EditorBrowsable(EditorBrowsableState.Never)]
656 protected virtual bool AccessibilityShouldReportZeroChildren()
661 [EditorBrowsable(EditorBrowsableState.Never)]
662 protected virtual double AccessibilityGetMinimum()
667 [EditorBrowsable(EditorBrowsableState.Never)]
668 protected virtual double AccessibilityGetCurrent()
673 [EditorBrowsable(EditorBrowsableState.Never)]
674 protected virtual double AccessibilityGetMaximum()
679 [EditorBrowsable(EditorBrowsableState.Never)]
680 protected virtual bool AccessibilitySetCurrent(double value)
685 [EditorBrowsable(EditorBrowsableState.Never)]
686 protected virtual double AccessibilityGetMinimumIncrement()
691 [EditorBrowsable(EditorBrowsableState.Never)]
692 protected virtual bool AccessibilityIsScrollable()
697 [EditorBrowsable(EditorBrowsableState.Never)]
698 protected virtual string AccessibilityGetText(int startOffset, int endOffset)
703 [EditorBrowsable(EditorBrowsableState.Never)]
704 protected virtual int AccessibilityGetCharacterCount()
709 [EditorBrowsable(EditorBrowsableState.Never)]
710 protected virtual int AccessibilityGetCursorOffset()
715 [EditorBrowsable(EditorBrowsableState.Never)]
716 protected virtual bool AccessibilitySetCursorOffset(int offset)
721 [EditorBrowsable(EditorBrowsableState.Never)]
722 protected virtual AccessibilityRange AccessibilityGetTextAtOffset(int offset, AccessibilityTextBoundary boundary)
724 return new AccessibilityRange();
727 [EditorBrowsable(EditorBrowsableState.Never)]
728 protected virtual AccessibilityRange AccessibilityGetSelection(int selectionNumber)
730 return new AccessibilityRange();
733 [EditorBrowsable(EditorBrowsableState.Never)]
734 protected virtual bool AccessibilityRemoveSelection(int selectionNumber)
739 [EditorBrowsable(EditorBrowsableState.Never)]
740 protected virtual bool AccessibilitySetSelection(int selectionNumber, int startOffset, int endOffset)
745 [EditorBrowsable(EditorBrowsableState.Never)]
746 protected virtual bool AccessibilityCopyText(int startPosition, int endPosition)
751 [EditorBrowsable(EditorBrowsableState.Never)]
752 protected virtual bool AccessibilityCutText(int startPosition, int endPosition)
757 [EditorBrowsable(EditorBrowsableState.Never)]
758 protected virtual bool AccessibilityInsertText(int startPosition, string text)
763 [EditorBrowsable(EditorBrowsableState.Never)]
764 protected virtual bool AccessibilitySetTextContents(string newContents)
769 [EditorBrowsable(EditorBrowsableState.Never)]
770 protected virtual bool AccessibilityDeleteText(int startPosition, int endPosition)
775 [EditorBrowsable(EditorBrowsableState.Never)]
776 protected virtual bool AccessibilityScrollToChild(View child)
781 [EditorBrowsable(EditorBrowsableState.Never)]
782 protected virtual int AccessibilityGetSelectedChildrenCount()
787 [EditorBrowsable(EditorBrowsableState.Never)]
788 protected virtual View AccessibilityGetSelectedChild(int selectedChildIndex)
793 [EditorBrowsable(EditorBrowsableState.Never)]
794 protected virtual bool AccessibilitySelectChild(int childIndex)
799 [EditorBrowsable(EditorBrowsableState.Never)]
800 protected virtual bool AccessibilityDeselectSelectedChild(int selectedChildIndex)
805 [EditorBrowsable(EditorBrowsableState.Never)]
806 protected virtual bool AccessibilityIsChildSelected(int childIndex)
811 [EditorBrowsable(EditorBrowsableState.Never)]
812 protected virtual bool AccessibilitySelectAll()
817 [EditorBrowsable(EditorBrowsableState.Never)]
818 protected virtual bool AccessibilityClearSelection()
823 [EditorBrowsable(EditorBrowsableState.Never)]
824 protected virtual bool AccessibilityDeselectChild(int childIndex)