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

Projects
None yet
6 participants
@michaelDCurran
Copy link
Contributor

commented Jan 24, 2019

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.

michaelDCurran added some commits Jan 24, 2019

_UIAHandler: don't use UIA in MS Word by default as it is still not r…
…eady. Rather, still allow it to be used byased on the useInMSwordWhenAvailable config option.
Add an Advanced settings category to NVDA's Settings dialog. This con…
…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.

@michaelDCurran michaelDCurran requested review from leonardder and feerrenrut Jan 24, 2019

"louis",
"timeSinceInput",
):
checkbox=debugLogGroup.addItem(wx.CheckBox(self, label=key))

This comment has been minimized.

Copy link
@leonardder

leonardder Jan 25, 2019

Collaborator

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.

This comment has been minimized.

Copy link
@lukaszgo1

lukaszgo1 Jan 28, 2019

Contributor

instrructed = instructed

@leonardder
Copy link
Collaborator

left a comment

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.

This comment has been minimized.

Copy link
@leonardder

leonardder Jan 29, 2019

Collaborator

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.

This comment has been minimized.

Copy link
@leonardder

leonardder Jan 29, 2019

Collaborator

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

This comment has been minimized.

Copy link
@feerrenrut

feerrenrut Jan 29, 2019

Contributor

@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.

This comment has been minimized.

Copy link
@leonardder

leonardder Jan 29, 2019

Collaborator

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

@DrSooom

This comment has been minimized.

Copy link

commented Jan 29, 2019

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

@leonardder

This comment has been minimized.

Copy link
Collaborator

commented Jan 29, 2019

@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

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link
@feerrenrut

feerrenrut Jan 29, 2019

Contributor

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

This comment has been minimized.

Copy link
Contributor Author

commented Jan 29, 2019

@michaelDCurran michaelDCurran requested a review from leonardder Jan 31, 2019

@michaelDCurran michaelDCurran merged commit 9983e3f into master Jan 31, 2019

1 check passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details

@nvaccessAuto nvaccessAuto added this to the 2019.1 milestone Jan 31, 2019

michaelDCurran added a commit that referenced this pull request Jan 31, 2019

What's new: remove entry from bug fixes mentioning MS Word performanc…
…e improvements due to UIA support. This was disabled by default in #9200.

@feerrenrut feerrenrut referenced this pull request Feb 4, 2019

Merged

Tidy advanced gui panel #9239

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.