Skip to content

NVDAObjects.UIA: not all Windows 10/11 dialogs are recognized even though UIA says they are not dialogs #15729

@josephsl

Description

@josephsl

Hi,

A refinement of #8405:

Background

Windows 10 Version 1809 (October 2018 Update) and later allows UIA to inform NVDA that a dialog window is present (via IsDialog property). However, there are window elements that are dialogs but UIA says they are not.

Steps to reproduce:

Without any add-ons running:

  1. Open Command Prompt or PowerShell with admin privileges.
  2. Type "shutdown /S /T 600" without quotes (to schedule a shutdown after ten minutes).
  3. Press Enter and observe NVDA's speech behavior.

Actual behavior:

NVDA does not announce shutdown dialog content.

Expected behavior:

NVDA announces dialog content.

NVDA logs, crash dumps and other attachments:

None

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

alpha-29824,f32f38fa

Windows version:

Windows 11 23H2 beta (build 22635)

Name and version of other software in use when reproducing the issue:

None

Other information about your system:

None

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

Yes - same behavior in earlier releases

If NVDA add-ons are disabled, is your problem still occurring?

Yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

Additional context:

Narrator announces dialog content.

Upon further investigation, the following algorithm is at fault:

  1. In NVDA UIA objects' find overlay classes method, NVDA first checks if IsDialog property can be obtained and says "true" (Windows 10 Version 1809 or later).
  2. If COM error is raised, NVDA falls back to comparing UIA class name against known dialog class names.

Therefore, refine the algorithm to check for both cases at once, only saying "no" when IsDialog property says False and class name is not listed in known dialog class names list. The worst case is if running Windows 10 1803 or earlier and dialog class name is not listed.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions