diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2019-07-26 16:47:19 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-26 16:47:19 +0300 |
commit | a824f8576712785f37218fbc39f0e3ad601b744c (patch) | |
tree | 802a649388b644e14f55541b030cc95afcc8e411 | |
parent | 08b3d90c71eabd57b8e7d9850508134fb73e0687 (diff) | |
parent | 0f39b930be87da0dbb0effbeb19f1247078e34ca (diff) |
Merge pull request #8181 from mono/backport-pr-8180-to-release-8.2
[release-8.2] [A11y] Check for selector before trying to call accessibility method
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs | 8 |
1 files changed, 8 insertions, 0 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 4edb386006..2180972ffd 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs @@ -313,6 +313,8 @@ namespace MonoDevelop.Components.AtkCocoaHelper static readonly IntPtr selSetAccessibilityServesAsTitleForUIElements_Handle = Selector.GetHandle ("setAccessibilityServesAsTitleForUIElements:"); static readonly IntPtr selAccessibilityServesAsTitleForUIElements_Handle = Selector.GetHandle ("accessibilityServesAsTitleForUIElements:"); + static readonly Selector selAccessibilityServesAsTitleForUIElements = new Selector ("accessibilityServesAsTitleForUIElements:"); + public static void SetTitleFor (this Atk.Object o, params Atk.Object [] objects) { var nsa = GetNSAccessibilityElement (o); @@ -359,6 +361,12 @@ namespace MonoDevelop.Components.AtkCocoaHelper return; } + // bug #940756 suggests that some elements do not respond to this selector + // so check before sending so it doesn't throw an ObjC exception + if (!((NSObject)titleNsa).RespondsToSelector (selAccessibilityServesAsTitleForUIElements)) { + return; + } + IntPtr ptr = Messaging.IntPtr_objc_msgSend (titleNsa.Handle, selAccessibilityServesAsTitleForUIElements_Handle); using (var array = Runtime.GetNSObject<NSArray> (ptr)) using (var copy = array != null ? (NSMutableArray)array.MutableCopy () : new NSMutableArray (1)) { |