diff options
author | iain holmes <iain@xamarin.com> | 2017-05-26 18:07:14 +0300 |
---|---|---|
committer | iain holmes <iain@xamarin.com> | 2017-05-26 18:58:28 +0300 |
commit | d953cf701b9f0c41d99ecaa54ccf822bc42f7043 (patch) | |
tree | c0b024922e2b1026c220f03548613d5fbe973479 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper | |
parent | 0cfac2abe4e3682701ca7f88907860e11bb7712b (diff) |
[A11y] Prevent a crash when interacting with the text editor
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs index bc4248a5cb..dc0ddd15ec 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs @@ -845,6 +845,16 @@ namespace MonoDevelop.Components.AtkCocoaHelper p.GetRangeForPosition = value; } } + public Func<AtkCocoa.Range> GetVisibleCharacterRange { + set { + var p = realProxyElement as RealAccessibilityElementNavigableStaticTextProxy; + if (p == null) { + throw new Exception ("Not a Text element"); + } + + p.GetVisibleCharacterRange = value; + } + } } class RealAccessibilityElementProxy : NSAccessibilityElement, INSAccessibility @@ -1406,6 +1416,13 @@ namespace MonoDevelop.Components.AtkCocoaHelper } } + public override NSRange AccessibilityVisibleCharacterRange { + get { + var realRange = GetVisibleCharacterRange (); + return new NSRange (realRange.Location, realRange.Length); + } + } + public Func<string> Contents { get; set; } public Func<int> NumberOfCharacters { get; set; } public Func<int> InsertionPointLineNumber { get; set; } @@ -1416,6 +1433,7 @@ namespace MonoDevelop.Components.AtkCocoaHelper public Func<int, AtkCocoa.Range> GetRangeForIndex { get; set; } public Func<int, AtkCocoa.Range> GetStyleRangeForIndex { get; set; } public Func<Point, AtkCocoa.Range> GetRangeForPosition { get; set; } + public Func<AtkCocoa.Range> GetVisibleCharacterRange { get; set; } // Returned frame is in screen coordinate space [Export ("accessibilityFrameForRange:")] @@ -1450,7 +1468,6 @@ namespace MonoDevelop.Components.AtkCocoaHelper NSRange AccessibilityRangeForLine (nint line) { var range = GetRangeForLine ((int)line); - return new NSRange (range.Location, range.Length); } |