Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@xamarin.com>2019-07-26 16:47:19 +0300
committerGitHub <noreply@github.com>2019-07-26 16:47:19 +0300
commita824f8576712785f37218fbc39f0e3ad601b744c (patch)
tree802a649388b644e14f55541b030cc95afcc8e411 /main
parent08b3d90c71eabd57b8e7d9850508134fb73e0687 (diff)
parent0f39b930be87da0dbb0effbeb19f1247078e34ca (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
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs8
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)) {