New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
processFocusWinEvent: force focus-event after a reorder-event was made #2132
Comments
Comment 2 by jteh on 2012-02-28 01:36 Are your children simple elements (i.e. child IDs with no IAccessible object of their own)? Can you provide the log output from pressing NVDA+f1 on a focused child? It would also be good to see a log of raw focus events. You can get this using AccProbe. |
Comment 3 by adrianw on 2012-02-28 14:32 Q: Are your children simple elements (i.e. child IDs with no IAccessible object of their own)? Q: Can you provide the log output from pressing NVDA+f1 on a focused child? Q: It would also be good to see a log of raw focus events.
Thanks! Adrian |
@jcsteh Since the original author of this ticket, although now out-of-reach, did respond to your questions in #2132 (comment), could you please provide a follow-up comment? |
I haven't dug into this too deeply, but it looks like the no duplicate rule for child id > 0 is specific to simple children; i.e. IAccessibleChildID > 0, not event_childID > 0. In this case, these are full IAccessibles, but with a positive child id. We might be able to test event_childID > 0 instead... or perhaps we could somehow use the reorder event as was originally suggested. Regardless, we don't have any way to contact the reporter and thus nothing to work with. Closing, but we can reopen if this becomes relevant again. |
Reported by adrianw on 2012-02-27 13:24
Hello.
There is a problem with "processFocusWinEvent()" in IAccessibleHandler.py.
The signature looks like this:
"def processFocusWinEvent(window,objectID,childID,force=False)"
With "force=False" processFocusWinEvent() ignores a second EVENT_OBJECT_FOCUS if the current focused
element has the same childID as the new element even when a EVENT_OBJECT_REORDER was triggered before. So the new focused element never gets read-out by nvda.
In my application, after some user-input, my object-model changes significantly and all the visible elements getting reordered and another element gets the focus. Sometimes different elements got the same childID and a EVENT_OBJECT_FOCUS gets ignored by NVDA (NVDA thinks it's the same element, but that's not the case).
When i edit the nvda-source-code and set "force=True" in processFocusWinEvent everything works fine. The new focused element gets read-out by nvda.
Is it possible to queue the second focus-event when a previous EVENT_OBJECT_REORDER has been made?
IMHO, after a REORDER the first focused element isn't valid any more and nvda should
accept a second EVENT_OBJECT_FOCUS.
To solve this i'd like to suggest:
Thanks for a great tool!!
Adrian
The text was updated successfully, but these errors were encountered: