-
-
Notifications
You must be signed in to change notification settings - Fork 625
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
Allow appModules to specify custom tab orders #5960
Comments
I think an AppModule method for this which is always called is a bad idea for several reasons:
If we really do need something like this, I think a better way to do it is to create an NVDAObject mix-in class (similar to the stuff in NVDAObjects.behaviors) which supports tab order overriding. The overlay would bind tab and shift+tab. From there, there are a couple ways it can work:
|
|
After having to do this for the keyboard shortcuts dialog of notepad++ I believe I have found the best way to do this.
An example tab key script is in the prototype implementation. 1 |
Any properties and scripts associated with this should absolutely not be placed on the base NVDAObject. It should be a mix-in behaviour. This means that stuff that doesn't need this isn't impacted by it. We don't want to intercept the tab key unless we must. |
@jcsteh commented on Jun 29, 2016, 9:11 PM MDT:
I'm okay with that approach, maybe a class in behaviors, called CustomTabOrder? |
Let's call it FakeTabOrder, since it makes it clear it's faked and we
already have a class called RowWithFakeNavigation there too.
|
Sure. |
to keep with the _get_name and friends methods? |
A property is appropriate, yes.
|
cc @derekriemer: Do you have an update for this issue? |
I have a prototype, and I need to work out the kinks. I haven't worked on this in probably close to a year, but I'd like to finish it at some point. |
I'm interested in taking this one on.
I propose creating an api for allowing appModules to specify what to do next when tab or shift+tab is pressed. For example, if I press tab in an application and a non-desirable behavior occurs, I would like to be able to easily script NVDA to know that it should override default tab behavior. Fore example, if I tab in teamtalk to the tree view, I skip over the list of messages, but shift-tab hits it correctly. Having an api that lets me specify that when the tabPanel comes into focus, tab moves to the message list would be desirable. My idea is as follows.
Create an api that calls a given method (maybe of the appModuleHandler.AppModule class, similar to nvdaObjectInit that takes an NVDAObject, and specifies whether it should be tabbable or not, and if it is, what tabIndex it should have. We also need to specify that an object should never be able to be tabbed to. We could do this statically, but I'm curious if rather than keeping a list of things which tab can reach, we need this to happen dynamically. So then we'd need a way for an individual NVDAObject or appModule to say "this object has focus, tab was pressed, the object that has these properties should be tabbed to." I know you theoretically could do this with a script, but having an api for it might be nice.
The text was updated successfully, but these errors were encountered: