Skip to content
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

Make UIA in MS Word optional again, through an Advanced Settings category #9200

Merged
merged 7 commits into from Jan 31, 2019

Conversation

michaelDCurran
Copy link
Member

Link to issue number:

None.

Summary of the issue:

NVDA switched to using UI Automation to access Microsoft Word document controls by default for Office 2016/365, however Office's UIA support is still not 100% complete.
This should be left optional for 2019.1 at least.

Description of how this pull request fixes the issue:

UIA is no longer used by default in MS Word. However, there is now a new Advanced Settings category in NVDA's settings dialog which contains a checkbox to turn this on for testing this feature out.
The Advanced Settings category also contains all other config options previously not in the GUI. these include caret movement timeout, and the Debug log categories.

Testing performed:

Tested each option in the Advanced settings category to ensure that their setting is remembered when opening the Settings dialog again, and that the option is truly activated / deactivated in NVDA itself.

Known issues with pull request:

Although there is a panel caption warning the user to be careful with these settings, it is not automatically read by NVDA when tabbing from the categories list into the settings themselves. This is similar to the Document Formatting settings caption which is also not read.

Change log entry:

New features:
A new Advanced Settings category has been added to NVDA's Settings dialog, including an option to try out NVDA's new support for Microsoft Word via the Microsoft UI Automation API.

…eady. Rather, still allow it to be used byased on the useInMSwordWhenAvailable config option.
…tains all config options that were previously not accessible from the GUI. this includes:

Use UIA in MS Word, caret movement timeout, and the debug log categories.
"louis",
"timeSinceInput",
):
checkbox=debugLogGroup.addItem(wx.CheckBox(self, label=key))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you considered making this a checkable list? You can use the keyboard layouts list as an example.

@@ -1603,6 +1603,26 @@ This category contains the following options:
==== Recognition language ====[Win10OcrSettingsRecognitionLanguage]
This combo box allows you to choose the language to be used for text recognition.

+++ Advanced Settings +++
Warning! The settings in this category are for advanced users and may cause NVDA to not function correctly if configured in the wrong way.
Only make changes to these settings if you are sure you know what you are doing or if you have been specifically instrructed to by an NVDA developer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instrructed = instructed

Copy link
Collaborator

@LeonarddeR LeonarddeR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks ok, just some user guide things


==== Use UI automation to access Microsoft Word document controls when available ====
When this option is enabled, NVDA will try to use the Microsoft UI Automation accessibility api in order to fetch information from Microsoft Word document controls.
this includes in Microsoft Word itself, and also the Microsoft Outlook message viewer and composer.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't start with a capital T

Suggested change
this includes in Microsoft Word itself, and also the Microsoft Outlook message viewer and composer.
This includes documents in Microsoft Word itself, and also the Microsoft Outlook message viewer and composer.

==== Use UI automation to access Microsoft Word document controls when available ====
When this option is enabled, NVDA will try to use the Microsoft UI Automation accessibility api in order to fetch information from Microsoft Word document controls.
this includes in Microsoft Word itself, and also the Microsoft Outlook message viewer and composer.
For the most recent versions of Microsoft Office 2016/365 running on windows 10, UI Automation support is complete enough to provide access to Microsoft Word documents almost on par with NvDA's existing Microsoft Word support, with the added advantage that responsiveness is majorly increased.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean with "on par"? I assume it's a typo? Also, note the lower case v in NvDA's

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LeonarddeR "on par" is used in golf, and at least quite commonly in Australia, apparently comes from Latin to mean equal to. As a suggestion, the phrase "feature parity" might be preferable.

If you find that NVDA seems to be incorrectly tracking the caret E.g. it seems to be always one character behind or is repeating lines, then you may wish to try increasing this value.

==== Debug logging categories ====
The checkboxes in this group allow you to enable specific categories of debug messages in NVDA's log.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is now a list instead of a group, though the list has its own group

@DrSooom
Copy link

DrSooom commented Jan 29, 2019

Describing hwIo, audioDucking, gui, louis and timeSinceInput in the User Guide would be nice.

@LeonarddeR
Copy link
Collaborator

@DrSooom: I don't think it will add anything useful. These are debug flags that should usually only be set when a developer asks you. If a user doesn't know what they mean, it is probably not necessary for that user to consider checking them.

@DrSooom
Copy link

DrSooom commented Jan 29, 2019

@LeonarddeR: That's right, but the user should be able to control and understand the developer's choice. In the end he always can (and should) read the log file before sending/uploading it. So updating this wiki article should be enough.

I'm not sure if the User Guide contains links to wiki articles. If not, then the User Guide is already okay.

Edit: And maybe parts of the wiki article Log Files and Crash Dumps should be updated too.

return True
if (
versionMajor<minMSWordUIAVersion.major
or versionMajor==minMSWordUIAVersion.major and versionMinor==minMSWordUIAVersion.minor and versionBuild<minMSWordUIAVersion.build
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should leave in place checks that exclude versions that we know will not work. Though this should be reflected in the user guide; "This setting will not enable UIA in MS Word versions below 16.0.9000"

@michaelDCurran
Copy link
Member Author

michaelDCurran commented Jan 29, 2019 via email

@michaelDCurran michaelDCurran merged commit 9983e3f into master Jan 31, 2019
@nvaccessAuto nvaccessAuto added this to the 2019.1 milestone Jan 31, 2019
michaelDCurran added a commit that referenced this pull request Jan 31, 2019
…e improvements due to UIA support. This was disabled by default in #9200.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants