Fix table navigation commands in Google Docs#9562
Merged
Merged
Conversation
Specifically: * Expose the real IAccessible2 table coordinates for navigation via rowNumber, columnNumber, rowCount and columnCount NvDAObject properties, and controlField attributes, rather than IA2-specific table properties. Add new optional properties to NVDAObjects: presentationalRowNumber, presentationalColumnNumber, presentationalRowCount and presentationColumnCount. * Provide implementations of the presentational* properties for tables on NVDAObjects for IAccessible2 that uses rowindex and colindex IA2 aria attributes, allowing web authors to override how table coordinates are presented without confusing actual table navigation logic. * Similarly for controlFields, expose table-* and table-*-presentational attributes allowing for overriding of table coordinate presentation when the web author has specified it. * IA2TextInfo's updateSelection method: If the requested start and end offsets are the same (I.e. the caller wants a collapsed selection) call setCaretOffset instead. This gets around strange bugs in Google Ghrome / Google Docs where making collapsed selections in table cells selects the entire cell.
LeonarddeR
suggested changes
May 13, 2019
| """ | ||
| raise NotImplementedError | ||
|
|
||
| def _get_rowSpan(self): |
Collaborator
There was a problem hiding this comment.
Just to make sure, could there also be something like a presentational row/column span?
Member
Author
There was a problem hiding this comment.
I'm not aware of any colspan or rowspan ARIA attributes at this stage. Only rowIndex and rowCount. Spanning would also have an affect on the physical table thus I don't think that could ever be virtualized.
feerrenrut
suggested changes
May 14, 2019
Member
Author
|
@feerrenrut I have addressed the rest of the review comments from you and @LeonarddeR |
feerrenrut
approved these changes
May 15, 2019
Contributor
|
I don't think it should block this PR, however there is still a question from @LeonarddeR:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Link to issue number:
Fixes #9494
Summary of the issue:
Currently trying to move around a table in Google Docs with Firefox or Chrome, using NVDA's table navigation commands fails with an exception.
Specifically, NVDAObject's rowNumber, columnNumber etc expose web author specified rowindex and colindex ARIA values which don't work with the other IAccessible2 table methods for looking up cells.
For browseMode at least, this was already partly addressed by exposing special table-physical* attributes on controlFields which were used for table navigation, where as presentation (speech, braille) used the standard table-* attributes.
Description of how this pull request fixes the issue:
Rewrite how presentational verses physical table properties are exposed entirely. Instead exposing default / physical table properties as their standard rowNumber, columnNumber etc. If the underlying API does have presentational coordinates, then expose these as the presentational* values, using them only for presentation, and not physical table navigation.
Specific changes:
Testing performed:
Using this testcase:
table.html.txt
Opened it in both Mozilla Firefox and Google Chrome.
Ensured that:
Known issues with pull request:
None.
Change log entry:
Bug fixes: