Screen reader announces role and state for Awake tray menu items (#13904)

This commit is contained in:
Stefan Markovic
2021-10-21 17:08:58 +02:00
committed by GitHub
parent 64cc6b7af7
commit 5b76668cbe

View File

@@ -175,7 +175,7 @@ namespace Awake.Core
}; };
// No keep-awake menu item. // No keep-awake menu item.
ToolStripMenuItem? passiveMenuItem = new ToolStripMenuItem CheckButtonToolStripMenuItem? passiveMenuItem = new CheckButtonToolStripMenuItem
{ {
Text = "Off (Passive)", Text = "Off (Passive)",
}; };
@@ -189,7 +189,7 @@ namespace Awake.Core
}; };
// Indefinite keep-awake menu item. // Indefinite keep-awake menu item.
ToolStripMenuItem? indefiniteMenuItem = new ToolStripMenuItem CheckButtonToolStripMenuItem? indefiniteMenuItem = new CheckButtonToolStripMenuItem
{ {
Text = "Keep awake indefinitely", Text = "Keep awake indefinitely",
}; };
@@ -202,7 +202,7 @@ namespace Awake.Core
indefiniteKeepAwakeCallback(); indefiniteKeepAwakeCallback();
}; };
ToolStripMenuItem? displayOnMenuItem = new ToolStripMenuItem CheckButtonToolStripMenuItem? displayOnMenuItem = new CheckButtonToolStripMenuItem
{ {
Text = "Keep screen on", Text = "Keep screen on",
}; };
@@ -222,6 +222,7 @@ namespace Awake.Core
}; };
timedMenuItem.Checked = mode == AwakeMode.TIMED; timedMenuItem.Checked = mode == AwakeMode.TIMED;
timedMenuItem.AccessibleName = timedMenuItem.Text + (timedMenuItem.Checked ? ". Checked. " : ". UnChecked. ");
ToolStripMenuItem? halfHourMenuItem = new ToolStripMenuItem ToolStripMenuItem? halfHourMenuItem = new ToolStripMenuItem
{ {
@@ -284,5 +285,38 @@ namespace Awake.Core
TrayIcon.Text = text; TrayIcon.Text = text;
TrayIcon.ContextMenuStrip = contextMenuStrip; TrayIcon.ContextMenuStrip = contextMenuStrip;
} }
private class CheckButtonToolStripMenuItemAccessibleObject : ToolStripItem.ToolStripItemAccessibleObject
{
private CheckButtonToolStripMenuItem _menuItem;
public CheckButtonToolStripMenuItemAccessibleObject(CheckButtonToolStripMenuItem menuItem)
: base(menuItem)
{
_menuItem = menuItem;
}
public override AccessibleRole Role
{
get
{
return AccessibleRole.CheckButton;
}
}
public override string Name => _menuItem.Text + ", " + Role + ", " + (_menuItem.Checked ? "Checked" : "Unchecked");
}
private class CheckButtonToolStripMenuItem : ToolStripMenuItem
{
public CheckButtonToolStripMenuItem()
{
}
protected override AccessibleObject CreateAccessibilityInstance()
{
return new CheckButtonToolStripMenuItemAccessibleObject(this);
}
}
} }
} }