Skip to content

[Bug]: Cross-app — controls announced with other words than they show, final actions with no spoken warning, a DNS row that tabs backwards #2883

Open

Description

@laurentiu021

Problem

  1. Names that do not contain the visible words. EveryLabelledControl_IsAnnouncedWithTheWordsPrintedOnIt checks only buttons and toggles whose label is a literal Content and whose name is literal, so bound names, labels made of child TextBlocks, hyperlinks and switches labelled by a neighbouring TextBlock are never checked. Eight fail the rule: for example, System Health's chkdsk row shows "Scan" and is announced "Run chkdsk on drive C:", and Duplicate Finder shows "Keep this one" and is announced "Keep {file} instead". Someone using Voice Access or Dragon who says the words on screen matches nothing, and Narrator reads other words than the ones shown.
  2. Final actions with no warning for a screen reader. EveryImmediatelyDestructiveButton_ExplainsWhatItWillDo requires AutomationProperties.HelpText on controls that do something the user cannot take back, because Narrator users never see the red fill and the confirmation only comes after activation. It reads a hand-kept list of five commands. Seven more do something just as final and have no HelpText, among them File Lock Detector's "End process" (the same kill as Process Manager's, which is on the list) and Deep Cleanup's "Clean selected".
  3. The DNS row tabs backwards. On DNS & Hosts, Reset to DHCP, Apply and Undo are docked right and declared before the preset picker, so Tab goes Reset to DHCP, Apply, Undo, then the picker, the reverse of what is on screen. A keyboard user entering the card lands first on a button that changes the PC's DNS. Bulk Installer's search row has the same shape: Tab reaches Search before the box.
  4. A countdown read out every second. After Apply on Display Profiles, a one-second timer rewrites StatusMessage ("Keep these settings? Reverting in 14s…"), and the status line is a live region, so Narrator queues about fifteen near-identical sentences while the user tries to reach Keep, and keeps speaking after the display has reverted. Nothing moves focus to Keep. NoProgressCallback_WritesAnAnnouncedLine covers progress callbacks, not timer ticks.

Steps to reproduce

  1. With Narrator on, open System Health and move to a chkdsk row's Scan button: it is read as "Run chkdsk on drive C:".
  2. On DNS & Hosts, press Tab into the DNS card: focus lands on Reset to DHCP first.

Expected behavior

Each control's name starts with the words it shows, every final action says what it does before it is pressed, focus follows the order on screen, and a countdown is announced once.

Proposed fix

  • Start each name with the visible words and add context after them ("Scan drive {0}", "Keep this one: {0}"), or use AutomationProperties.LabeledBy for switches labelled by a neighbour, and extend the guard to bound names and child-TextBlock labels.
  • Add the seven commands to DestructiveControls and give each a HelpText sentence.
  • Lay the DNS row and Bulk Installer's search row out in visual order (a Grid, or the box first and the buttons after it).
  • Set the Display Profiles status once when the countdown starts and once when it ends, keep the seconds in the warning bar, which is not a live region, and move focus to Keep; extend the announced-line guard to DispatcherTimer.Tick handlers.

Affected tab

System Health, Duplicate Finder, File Lock Detector, Deep Cleanup, DNS & Hosts, Bulk Installer, Display Profiles.

Activity

  1. added
    bugSomething isn't working
    uxVisual or interaction improvement
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinguxVisual or interaction improvement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions