From 51b41b23e1afc71f92981df24e4f1d098f61bb75 Mon Sep 17 00:00:00 2001 From: iain holmes Date: Mon, 17 Jul 2017 19:26:08 +0100 Subject: [A11y] Improve tabstrip accessibility --- .../AtkCocoaHelper.cs | 1 + .../AtkCocoaHelperMac.cs | 20 ++++++++++++++++++++ .../AtkCocoaHelperNoOp.cs | 8 ++++++++ .../MonoDevelop.Components/Tabstrip.cs | 6 ++++-- 4 files changed, 33 insertions(+), 2 deletions(-) (limited to 'main/src/core/MonoDevelop.Ide') diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelper.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelper.cs index 9f8bd48c01..74c8007f94 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelper.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelper.cs @@ -533,6 +533,7 @@ namespace MonoDevelop.Components.AtkCocoaHelper string Identifier { get; set; } string Help { get; set; } bool Hidden { get; set; } + int Index { get; set; } // For Navigable Static Text Func Contents { set; } 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 dc0ddd15ec..6dedc4b8d9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperMac.cs @@ -855,6 +855,26 @@ namespace MonoDevelop.Components.AtkCocoaHelper p.GetVisibleCharacterRange = value; } } + + public int Index { + get { + var p = realProxyElement; + if (p == null) { + throw new Exception ("Not proxy element"); + } + + return (int) p.AccessibilityIndex; + } + + set { + var p = realProxyElement; + if (p == null) { + throw new Exception ("Not a proxy element"); + } + + p.AccessibilityIndex = value; + } + } } class RealAccessibilityElementProxy : NSAccessibilityElement, INSAccessibility diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperNoOp.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperNoOp.cs index c73624c21d..6843a55a72 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperNoOp.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AtkCocoaHelper/AtkCocoaHelperNoOp.cs @@ -219,6 +219,14 @@ namespace MonoDevelop.Components.AtkCocoaHelper } } + public int Index { + get { + return 0; + } + set { + } + } + public Gtk.Widget GtkParent { get; set; } public Gdk.Rectangle FrameInGtkParent { get; set; } public Gdk.Rectangle FrameInParent { get; set; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs index 678374de8e..ab2b4d2d2b 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs @@ -128,6 +128,7 @@ namespace MonoDevelop.Components var proxies = new AtkCocoaHelper.AccessibilityElementProxy [tabs.Count]; foreach (var tab in tabs) { proxies [i] = tab.Accessible; + tab.Accessible.Index = i; i++; } @@ -204,7 +205,7 @@ namespace MonoDevelop.Components { requisition.Height = (int)Math.Ceiling (tabSizes.Max (p => p.Y)); } - + protected override bool OnExposeEvent (Gdk.EventExpose evnt) { using (var cr = Gdk.CairoHelper.Create (evnt.Window)) { @@ -367,7 +368,6 @@ namespace MonoDevelop.Components Gdk.Rectangle gdkRect = new Gdk.Rectangle ((int)allocation.X, (int)allocation.Y, (int)allocation.Width, (int)allocation.Height); Accessible.FrameInGtkParent = gdkRect; // If Y != 0, then we need to flip the y axis - Accessible.FrameInParent = gdkRect; } } @@ -406,8 +406,10 @@ namespace MonoDevelop.Components this.TabPosition = tabPosition; Accessible = AccessibilityElementProxy.ButtonElementProxy (); + Accessible.SetRole (AtkCocoa.Roles.AXRadioButton, "tab"); Accessible.Title = label; Accessible.GtkParent = parent; + Accessible.Identifier = "Tabstrip.Tab"; Accessible.PerformPress += OnTabPressed; } -- cgit v1.2.3