Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit e1fc91d

Browse files
committed
[Debugger] Add accessibility titles for buttons/images in cells
Added accessibility titles to the buttons and images that are displayed in the debugger tree view in the Exception Caught dialog and the Locals and Watch pad. The visualizer buttons now have a descriptive name read by Voice Over. Images now have a descriptive name read by Voice Over.
1 parent 3558f38 commit e1fc91d

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacDebuggerObjectNameView.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public MacDebuggerObjectNameView (MacObjectValueTreeView treeView) : base (treeV
9292

9393
PreviewButton = new NSButton {
9494
TranslatesAutoresizingMaskIntoConstraints = false,
95+
AccessibilityTitle = GettextCatalog.GetString ("Open Preview Visualizer"),
9596
Image = GetImage ("md-empty", Gtk.IconSize.Menu),
9697
BezelStyle = NSBezelStyle.Inline,
9798
Bordered = false
@@ -264,6 +265,9 @@ protected override void UpdateContents ()
264265
TextField.Editable = editable;
265266
UpdateFont (TextField);
266267
TextField.SizeToFit ();
268+
ImageView.AccessibilityTitle = ObjectValueTreeViewController.GetAccessibilityTitleForIcon (
269+
Node.Flags,
270+
GettextCatalog.GetString ("Object Name"));
267271

268272
var value = editable && string.IsNullOrEmpty (name) ? placeholder : name;
269273
var textWidth = GetWidthForString (TextField.Font, value);

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacDebuggerObjectValueView.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public MacDebuggerObjectValueView (MacObjectValueTreeView treeView) : base (tree
8282

8383
int imageSize = treeView.CompactView ? CompactImageSize : ImageSize;
8484
viewerButton = new NSButton {
85+
AccessibilityTitle = GettextCatalog.GetString ("Open Value Visualizer"),
8586
Image = GetImage (Gtk.Stock.Edit, imageSize, imageSize),
8687
TranslatesAutoresizingMaskIntoConstraints = false
8788
};
@@ -188,7 +189,9 @@ protected override void UpdateContents ()
188189
// First item: Status Icon -or- Spinner
189190
if (evaluateStatusIcon != null) {
190191
statusIcon.Image = GetImage (evaluateStatusIcon, Gtk.IconSize.Menu, selected);
191-
192+
statusIcon.AccessibilityTitle = ObjectValueTreeViewController.GetAccessibilityTitleForIcon (
193+
evaluateStatusIcon,
194+
GettextCatalog.GetString ("Object Value"));
192195
if (!statusIconVisible) {
193196
AddSubview (statusIcon);
194197
statusIconVisible = true;

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,48 @@ public static string GetIcon (ObjectValueFlags flags)
964964
return "md-" + access + global + source;
965965
}
966966

967+
internal static string GetAccessibilityTitleForIcon (ObjectValueFlags flags, string defaultTitle = null)
968+
{
969+
if ((flags & ObjectValueFlags.Field) != 0 && (flags & ObjectValueFlags.ReadOnly) != 0)
970+
return GettextCatalog.GetString ("Literal");
971+
972+
string global = (flags & ObjectValueFlags.Global) != 0 ? GettextCatalog.GetString ("Static") : string.Empty;
973+
string source;
974+
975+
switch (flags & ObjectValueFlags.OriginMask) {
976+
case ObjectValueFlags.Property: source = GettextCatalog.GetString ("Property"); break;
977+
case ObjectValueFlags.Type: source = GettextCatalog.GetString ("Class"); global = string.Empty; break;
978+
case ObjectValueFlags.Method: source = GettextCatalog.GetString ("Method"); break;
979+
case ObjectValueFlags.Literal: return GettextCatalog.GetString ("Literal");
980+
case ObjectValueFlags.Namespace: return GettextCatalog.GetString ("Namespace");
981+
case ObjectValueFlags.Group: return GettextCatalog.GetString ("Open Resource Folder");
982+
case ObjectValueFlags.Field: source = GettextCatalog.GetString ("Field"); break;
983+
case ObjectValueFlags.Variable: return GettextCatalog.GetString ("Variable");
984+
default: return defaultTitle;
985+
}
986+
987+
string access;
988+
switch (flags & ObjectValueFlags.AccessMask) {
989+
case ObjectValueFlags.Private: access = GettextCatalog.GetString ("Private"); break;
990+
case ObjectValueFlags.Internal: access = GettextCatalog.GetString ("Internal"); break;
991+
case ObjectValueFlags.InternalProtected:
992+
case ObjectValueFlags.Protected: access = GettextCatalog.GetString ("Protected"); break;
993+
default: access = string.Empty; break;
994+
}
995+
996+
return access + " " + global + " " + source;
997+
}
998+
999+
internal static string GetAccessibilityTitleForIcon (string iconName, string defaultTitle)
1000+
{
1001+
switch (iconName) {
1002+
case "md-warning":
1003+
return GettextCatalog.GetString ("Warning");
1004+
default:
1005+
return defaultTitle;
1006+
}
1007+
}
1008+
9671009
static int GetKnownImageId (ObjectValueFlags flags)
9681010
{
9691011
var name = GetIcon (flags);

0 commit comments

Comments
 (0)