Add touch based web element navigation in browse mode#19414
Add touch based web element navigation in browse mode#19414SaschaCowley merged 33 commits intonvaccess:masterfrom
Conversation
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
|
@kefaslungu - do you intend to finish this? |
SaschaCowley
left a comment
There was a problem hiding this comment.
Welcome @kefaslungu! Thanks for opening your first PR for NVDA!
There are a few things in here that have me concerned, but overall I really like the direction you're going.
|
Hi, I am the original creator of the parts of the code reviewed in this pull request discussion. Kefas has adopted it to NVDA Core expectations and structure. The comment on implementation in the global commands module can be explained by the fact that the code and the idea behind it comes from an add-on (Enhanced Touch Gestures). The add-on used a global plugin class to house list of navigable elements, browse mode script calls, and the gesture to cycle between web elements. Our (Kefas and I) plan is to adopt Enhanced Touch Gestures add-on based on the pull request code structure and make changes based on review comments, with the end goal of removing web mode from the add-on in favor of NVDA Core version. Thanks for reviewing Kefas' pull request. |
… element registration and settings Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
|
Hi all, I've made some changes as follows:
|
SaschaCowley
left a comment
There was a problem hiding this comment.
Heading in the right direction, but still needs some work. Good progress though :)
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
…mode # Conflicts: # source/gui/settingsDialogs.py
|
Hi @SaschaCowley, Thanks for the detailed review! I've addressed all the feedback as follows:
All that is left now is documentation, but I'll do that as soon as the code is approved. Cheers! |
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
|
Hi @SaschaCowley any updates for me? |
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Qchristensen
left a comment
There was a problem hiding this comment.
Looks good, I did make a couple of suggestions
Signed-off-by: kefaslungu <jameskefaslungu@gmail.com>
Link to issue number:
Closes #3424
Summary of the issue:
As noted in the above issue, touch users do not have a dedicated way to perform browse mode style navigation of web content using touch gestures.
Description of user facing changes:
A new Web touch navigation mode has been introduced. When active, touch gestures allow users to navigate common web elements such as links, buttons, headings, form fields, landmarks, and other structural elements in browse mode documents.
This enables touch based navigation that mirrors existing browse mode navigation commands.
When browse mode is exited, the Web touch mode is automatically removed and touch navigation returns to its previous behavior.
Description of developer facing changes:
New touch gesture scripts have been added to invoke existing browse mode navigation commands. These scripts reuse the existing BrowseModeTreeInterceptor logic rather than introducing new navigation implementations.
Supporting logic has been added to track the active browse mode context and route touch gestures to the appropriate browse mode commands when available.
Description of development approach:
This change was implemented by subscribing to browse mode state change notifications and using them as the authoritative signal for enabling and disabling web specific touch behavior. The active browse mode tree interceptor is cached on activation and cleared on deactivation.
Testing strategy:
Manual testing was performed using touch navigation in multiple browse mode documents across supported web browsers. Testing verified:
Known issues with pull request:
None
Code Review Checklist: