Skip to content

UIA: selective event registration #11209

@LeonarddeR

Description

@LeonarddeR

Related to #11077, #11109, #11002, #8742

Is your feature request related to a problem? Please describe.

NVDA is listening globally to many UIA elements. This causes a major performance hit when many events are received (#11109)

As part of #11077, I investigated a suggestion by @jcsteh to only queue events for objects of interest. However, this doesn't cause the major performance improvement I was hoping for.

Describe the solution you'd like

I'm going to prototype the following:

  1. An easier method for event registration by means of EventHandlerGroups. This feature was introduced in IUIAutomation6. I already wrote a FakeEventHandlerGroup class to mimic this behavior on older versions of UIA. In short, this should allow us to request for automation/ notification and property events in one call instead of three on newer versions of UIA.
  2. When changing focus, register for events fired at the focus object and its ancestors.
  3. distinguish between events that are of global interest (notifications, focus changes, value changes) and local interest (name, description, item status, etc.). We can have a global and a local event handler group. The global group will be registered once, the local group will be added/removed on focus.

Nothing is set in stone yet. I just want to tackle these issues as they have major impact on my daily work.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions