Skip to content
Tree: 304d00f1d5
Commits on May 15, 2019
  1. Merge branch 'master' into threshold

    michaelDCurran committed May 15, 2019
  2. Allow disabling automatic focus of focusable elements in browse mode (#…

    leonardder authored and michaelDCurran committed May 15, 2019
    * Fast browse mode - system focus doesn't follow browse mode focus
    * Fix bug when checkboxes and radio button new state is not announced when checked or unchecked
    * Renaming configuration setting name to camel case
    * Refactoring definitions of passthrough methods
    * Refactoring sync focus function
    * Always call .scrollIntoView()
    * Fixing fast browse mode in Outlook emails
    * Fixing Tab behavior
    * Fixing bug - some edit boxes in IE impossible to enter
    * Refactoring
    * Refactoring - better tracking of async gainFocus events
    * Fixing exception in event pump
    * Rename browse modes
    * Set fast browse mode to be default
    * Updated bogfixes section
    * Add more keystrokes with focus sync
    * Renaming legacy browse mode back to traditional browse mode since we won't remove it in the nearby future
    * Update user documentation
    * Change toggle messages
    * Use .uniqueID attribute
    * Revert back to IA2UniqueID
    * Refactoring
    * Refactoring
    * Refactoring
    * Refactoring
    * Adding .uniqueID attribute to NVDAObject implementations
    * Adding passthrough gestures with numpadEnter
    * Lazy evaluation of uniqueID
    * Refactoring
    * Adding debug information - to be removed later
    * Implement uniqueID on NVDAObject
    * Use processID in the uniqueID "of windows, as windowHandles might eventually get reused
    * Remove everything reffering to async logic, except for the uniqueID properties
    * Make the code somewhat more compact
    * Fix issue with checkboxes
    * Remove references to uniqueId
    * Remove debug logging
    * Improve pass through gestures, added some more
    * Renames and restructuring code
    * Fix some unneeded changes
    * Only use lastFocusableObj when applicable
    * Update user guide
    * Move the auto focus focusable elements checkbox from browseMode settings to Advanced settings.
    * Update what's new.
  3. OneCore synthDriver: fix up merge conflicts.

    michaelDCurran committed May 15, 2019
  4. Bump commit to test nvda-commits list.

    michaelDCurran committed May 15, 2019
  5. appveyor: build snapshots for threshold

    michaelDCurran committed May 15, 2019
  6. Fix table navigation commands in Google Docs (#9562)

    michaelDCurran committed May 15, 2019
    * Allow table navigation in Google Docs.
    * 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.
    * Address review comments.
    * Address review comments.
    * Update what's new.
  7. Fix errors when profile name contains unicode characters (#9556)

    leonardder authored and michaelDCurran committed May 15, 2019
    * Fix errors when profile name contains unicode characters
    * mbcs > utf-8
  8. Bump NVDA version for threshold to 2019.3.0 and also set backwards co…

    michaelDCurran committed May 15, 2019
    …mpat to the same.
    We already know there will be 2019.2 before threshold, but this may need to be bumpt to 2019.4.0 if we end up doing a 2019.3 off master as well.
  9. New speech framework including callbacks, beeps, sounds, profile swit…

    jcsteh authored and michaelDCurran committed May 15, 2019
    …ches and prioritized queuing (#7599)
    * Enhance nvwave to simplify accurate indexing for speech synthesizers.
    1. Add an onDone argument to WavePlayer.feed which accepts a function to be called when the provided chunk of audio has finished playing. Speech synths can simply feed audio up to an index and use the onDone callback to be accurately notified when the index is reached.
    2. Add a buffered argument to the WavePlayer constructor. If True, small chunks of audio will be buffered to prevent audio glitches. This avoids the need for tricky buffering across calls in the synth driver if the synth provides fixed size chunks and an index lands near the end of a previous chunk. It is also useful for synths which always provide very small chunks.
    * Enhancements to config profile triggers needed for profile switching within speech sequences.
    1. Allow triggers to specify that handlers watching for config profile switches should not be notified. In the case of profile switches during speech sequences, we only want to apply speech settings, not switch braille displays.
    2. Add some debug logging for when profiles are activated and deactivated.
    * Add support for callbacks, beeps, sounds, profile switches and utterance splits during speech sequences, as well as prioritized queuing.
    Changes for synth drivers:
    - SynthDrivers must now accurately notify when the synth reaches an index or finishes speaking using the new `synthIndexReached` and `synthDoneSpeaking` extension points in the `synthDriverHandler` module. The `lastIndex` property is deprecated. See below regarding backwards compatibility for SynthDrivers which do not support these notifications.
    - SynthDrivers must now support `PitchCommand` if they which to support capital pitch change.
    - SynthDrivers now have `supportedCommands` and `supportedNotifications` attributes which specify what they support.
    - Because there are some speech commands which trigger behaviour unrelated to synthesizers (e.g. beeps, callbacks and profile switches), commands which are passed to synthesizers are now subclasses of `speech.SynthCommand`.
    Central speech manager:
    - The core of this new functionality is the `speech._SpeechManager` class. It is intended for internal use only. It is called by higher level functions such as `speech.speak`.
    - It manages queuing of speech utterances, calling callbacks at desired points in the speech, profile switching, prioritization, etc. It relies heavily on index reached and done speaking notifications from synths. These notifications alone trigger the next task in the flow.
    - It maintains separate queues (`speech._ManagerPriorityQueue`) for each priority. As well as holding the pending speech sequences for that priority, each queue holds other information necessary to restore state (profiles, etc.) when that queue is preempted by a higher priority queue.
    - See the docstring for the `speech._SpeechManager` class for a high level summary of the flow of control.
    New/enhanced speech commands:
    - `EndUtteranceCommand` ends the current utterance at this point in the speech. This allows you to have two utterances in a single speech sequence.
    - `CallbackCommand` calls a function when speech reaches the command.
    - `BeepCommand` produces a beep when speech reaches the command.
    - `WaveFileCommand` plays a wave file when speech reaches the command.
    - The above three commands are all subclasses of `BaseCallbackCommand`. You can subclass this to implement other commands which run a pre-defined function.
    - `ConfigProfileTriggerCommand` applies (or stops applying) a configuration profile trigger to subsequent speech. This is the basis for switching profiles (and thus synthesizers, speech rates, etc.) for specific languages, math, etc.
    - `PitchCommand`, `RateCommand` and `VolumeCommand` can now take either a multiplier or an offset. In addition, they can convert between the two on demand, which makes it easier to handle these commands in synth drivers based on the synth's requirements. They also have an `isDefault` attribute which specifies whether this is returning to the default value (as configured by the user).
    Speech priorities:
    `speech.speak` now accepts a `priority` argument specifying one of three priorities: `SPRI_NORMAL` (normal priority), `SPRI_NEXT` (speak after next utterance of lower priority)or `SPRI_NOW` (speech is very important and should be spoken right now, interrupting lower priority speech). Interrupted lower priority speech resumes after any higher priority speech is complete.
    Refactored functionality to use the new framework:
    - Rather than using a polling generator, spelling is now sent as a single speech sequence, including `EndUtteranceCommand`s, `BeepCommand`s and `PitchCommand`s as appropriate. This can be created and incorporated elsewhere using the `speech.getSpeechForSpelling` function.
    - Say all has been completely rewritten to use `CallbackCommand`s instead of a polling generator. The code should also be a lot more readable now, as it is now classes with methods for the various stages in the process.
    Backwards compatibility for old synths:
    - For synths that don't support index and done speaking notifications, we don't use the speech manager at all. This means none of the new functionality (callbacks, profile switching, etc.) will work.
    - This means we must fall back to the old code for speak spelling, say all, etc. This code is in the `speechCompat` module.
    - This compatibility fallback is considered deprecated and will be removed eventually. Synth drivers should be updated ASAP.
    - `speech.getLastIndex` is deprecated and will simply return None.
    - `IndexCommand` should no longer be used in speech sequences passed to `speech.speak`. Use a subclass of `speech.BaseCallbackCommand` instead.
    - In the `speech` module, `speakMessage`, `speakText`, `speakTextInfo`, `speakObjectProperties` and `speakObject` no longer take an `index` argument. No add-ons in the official repository use this, so I figured it was safe to just remove it rather than having it do nothing.
    - `speech.SpeakWithoutPausesBreakCommand` has been removed. Use `speech.EndUtteranceCommand` instead. No add-ons in the official repository use this.
    - `speech.speakWithoutPauses.lastSentIndex` has been removed. Use a subclass of `speech.BaseCallbackCommand` instead. No add-ons in the official repository use this.
    * Update the espeak synth driver to support the new speech framework.
    * Update the oneCore synth driver to support the new speech framework.
    * Update comtypes to version 1.1.3.
    This is necessary to handle events from SAPI 5, as one of the parameters is a decimal which is not supported by our existing (very outdated) version of comtypes .
    comtypes has now been added as a separate git submodule.
    * Update the sapi5 synth driver to support the new speech framework.
    * Fix submodule URL for comtypes. Oops!
    * Ensure eSpeak emits index callbacks even if the espeak event chunk containing the index is  0 samples in length. This allows sayAll to function with eSpeak. this may have broken due to a recent change in eSpeak I'm guessing.
    * Remove some debug print statements
    * Ensure eSpeak sets its speech parameters back to user-configured values if interupted while speaking ssml that changes those parameters.
    * Add a 'priority' keyword argument to  all speech.speak* functions allowing  the caller to provide a speech priority.
    * Alerts in Chrome and Firefox now are spoken with a higher speech priority, and no longer cancel speech beforehand. This means that the alert text will be spoken straight away, but will not interrupt  other speech such as the new focus.
    * Unit tests: fake speech functions now must take a 'priority' keyword argument to match the real functions.
    * Remove speech compat
    * synthDriverHandler.handleConfigProfileSwitch was renamed to handlePostConfigProfileSwitch. Ensure that speech  uses this name now.
    * synthDriverHandler.handlePostConfigProfileSwitch: reset speech queues if switching synths, so that the new synth has entirely new speech state.
    This behaviour can however be disabled by providing resetSpeechIfNeeded to false on this function. Speechmanager internally does this when dealing with configProfileSwitch commands in speech sequences.
     # Please enter the commit message for your changes. Lines starting
    * Remove the audioLogic synthesizer due to its extremely low usage.  If someone does require this, it could be updated and provided as an add-on.
    * Speech: correct indentation, which allows  profile switching in a speech eequence to work again.
    * Sapi4 synthDriver: very basic conversion to speechRefactor supporting synthIndexReached and synthDoneSpeaking, though for some sapi4 synths, indexing could be slightly early.
    * Convert system test synthDriver to speechRefactor so that indexing and doneSpeaking notifications are fired.
    * sayAllhandler: move trigger handling into _readText as recommended.
    * Remove some more speech compat stuff.
    * Speech: BaseCallbackCommand's run method is now abstract. Note that CallbackCommand now has been changed slightly so it implements its own run method which executes the callback passed to the command rather than run being overridden directly. BeepCommand also now calls playWaveFile with async set to True, not False so that it does not block. finally, BaseCallbackCommand's run method docstring notes that the main thread is blocked.
    * Speech: fix up some docstrings.
Commits on May 13, 2019
  1. Update changes file for PR #9297

    feerrenrut committed May 13, 2019
  2. Eclipse autocompletion support (PR #9297)

    francipvb authored and feerrenrut committed May 13, 2019
    Autocompletion items are read from the code editor when selected.
    Previously when writing code in the editor you need to focus the popup to know what items are on it. 
    Detect the autocompletion popup and read the selected item as it changes.
    This also includes a script to read javadoc right from the editor.
  3. Fix spelling error in changelog

    feerrenrut committed May 13, 2019
    noteplad++ -> notepad
  4. Fix regression caused by PR #9415. (PR #9557)

    francipvb authored and feerrenrut committed May 13, 2019
Commits on May 10, 2019
  1. Update changes file for PR #8614

    feerrenrut committed May 10, 2019
  2. Display log viewer even there's no dev info for navigator object (#8614)

    Andre9642 authored and feerrenrut committed May 10, 2019
    Fixes #8613
  3. Update changes file for PR #8927

    feerrenrut committed May 10, 2019
  4. Report module info command presents information in a more efficient m…

    lukaszgo1 authored and feerrenrut committed May 10, 2019
    …anner. (PR #8927)
    The command is triggered with `CTRL+NVDA+F1`.
    The module name is now presented first, then the executable name with the goal of hearing the relevant information as early as possible.
    Closes #7338
  5. Update changes file for PR #8844

    feerrenrut committed May 10, 2019
  6. Enable configuration profiles with gestures (PR #8844)

    leonardder authored and feerrenrut committed May 10, 2019
    Closes #4209 
    Previously configuration profiles could only be activated:
    - automatically with triggers
    - by manual activation in the dialog for configuration profiles
    This commit adds support for activation with gestures.
    1. When NVDA is started, a script is added to the class for every profile.
    2. Adding a profile also adds a script
    3. Removing a profile deletes it's script along with gestures that have ever been bound to it.
    4. Renaming a profile removes the old script, and then adds a new one. The assigned gestures are moved from the old to the new script.
    Config profiles are bound to file naming restrictions, whereas script names are bound to python variable naming rules. The latter rules are stricter. This is now taken care of by changing any thing that is not either an alphanumeric or an underscore to its base16 encoding. Doing so meets the naming requirements and avoids a name collision when having a "Test profile" and "Test_profile" profile.
  7. Update changes file for PR #8842

    feerrenrut committed May 10, 2019
  8. Fix accelerator conflicts in elements list

    lukaszgo1 authored and feerrenrut committed May 10, 2019
    Change shortcut for "Filter by" field in the elements list from ALT+E to ALT+Y to avoid conflicts with "Errors" when opened while using browse mode in Microsoft Word.
    Fixes #8842
  9. OneCore voices: Use new SpeechSynthesizerOptions properties to set pi…

    jcsteh authored and feerrenrut committed May 10, 2019
    …tch, volume and rate lengths (PR #8934)
    Fixes #7498.
    Issue summary for NVDA's OneCore voices support:
    - The rate setting is affected by the rate setting in Windows Speech Settings.
    - The pitch range is very limited (compared with Narrator).
    Previously, we used SSML in every utterance to set the base value of parameters, since there was no other way.
    However, Windows 10 Fall Creators Update introduced new properties in the SpeechSynthesizerOptions class to set these parameters.
    In addition to using these new properties, this commit adds rate boost to the synthesizer settings ring and added rate boost to the OneCore driver. This is disabled by default so speech should continue to be understandable. It is expected that for older versions of Windows 10 this driver should behave equally to how current master behaves.
    The only case where the rate will differ from before this commit will be when someone changed the rate in the Windows 10 speech settings. More information on this in the PR #8934
Commits on May 9, 2019
  1. Update changes file for PR #9334

    feerrenrut committed May 9, 2019
  2. Lower case addon name comparison (PR #9334)

    leonardder authored and feerrenrut committed May 9, 2019
    * Perform lower case comparison of add-on names when updating
    * Do not request removal of a possible previous add-on before it has been replaced by a new version
Commits on May 7, 2019
  1. Update changes file for PR #9441

    feerrenrut committed May 7, 2019
  2. Upgraded comtypes to 1.1.7 (PR #9441)

    francipvb authored and feerrenrut committed May 7, 2019
    Closes #9440
    Closes #8522
Commits on May 6, 2019
  1. Update changes file for PR #9415

    feerrenrut committed May 6, 2019
  2. Correct focus in Objects Explorer (vs2017 and vs2019) (PR #9415)

    francipvb authored and feerrenrut committed May 6, 2019
    Enforced UIA implementation of all UI elements in Visual Studio 15.3 and up.
    This adds an overlay class for the tree view items in object explorer. It takes a `focusRedirect` event and checks for its states
    If `STATE_FOCUSED` is not in the states set, it redirects the event to the real focused object.
    I'm not really sure if it is the right way of doing this.
    Closes #9311
  3. Update changes file for PR #9057

    feerrenrut committed May 6, 2019
    A command has been added to change the mouse text unit resolution (how much text will be spoken when the mouse moves), it has not been assigned a default gesture. (#9056)
  4. Add mouse text resolution input gesture (PR #9057)

    leonardder authored and feerrenrut committed May 6, 2019
    It was only possible to change the mouse text unit resolution using NVDA's mouse settings panel. A new script in globalCommands has been added, it has not been assigned a default gesture.
    Closes #9056
Commits on May 2, 2019
  1. Update changes file for PR #9497

    feerrenrut committed May 2, 2019
    In Microsoft Excel, the cell location is announced after it changes due to the shift+enter or shift+numpadEnter gestures. (Issue #9499)
  2. shift+enter and shift+numpadEnter keys now announce the previous cell…

    abdel792 authored and feerrenrut committed May 2, 2019
    … in the same column in Excel (PR #9497)
    Fixes #9499
  3. Fixed Say all in Scintilla controls when word wrapping is on (PR #9522)

    DataTriny authored and feerrenrut committed May 2, 2019
    Fixes #9521.
You can’t perform that action at this time.