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:
- 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.
- When changing focus, register for events fired at the focus object and its ancestors.
- 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.
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:
Nothing is set in stone yet. I just want to tackle these issues as they have major impact on my daily work.