Skip to content
Permalink
Branch: master
Commits on Aug 14, 2019
  1. Fix bugs in the set/compare endPoint overrides. (PR #10091)

    codeofdusk authored and feerrenrut committed Aug 14, 2019
Commits on Aug 13, 2019
  1. UIA in WinConsole: Always use ConsoleUIATextInfo for UIA consoles (PR #…

    codeofdusk authored and feerrenrut committed Aug 13, 2019
    …10052)
    
    NVDA was dynamically selecting the wrong TextInfo implementation (see NVDAObjects.UIA.UIA._getTextInfo).
    Instead we override the _get_TextInfo method of NVDAObjects.UIA.UIA to return ConsoleUIATextInfo instead of UIATextInfo. 
    ConsoleUIATextInfo will properly handle collapsed textRanges in UIA consoles.
Commits on Aug 12, 2019
  1. UIA in Win Console: fix setEndPoint/compareEndPoints (PR #10057)

    codeofdusk authored and feerrenrut committed Aug 12, 2019
    Closes #10035
    Related to #9614
    Identical to #10043
    
    Works around a UIA bug on Windows 10 1803 and later that means we can
    not trust the "end" endpoint of a collapsed (empty) text range for comparisons. 
    The console incorrectly reports the "end" as being past the "start" endpoint.
    
    This stops braille being able to properly track the system caret in Windows Console.
    
    Instead use getText(1) on the textRange to attempt to fetch 1 character.
    getText returns an empty string for a collapsed range. By definition, the "start" and
    "end" endpoints for a collapsed range are equivalent, thus read from the "start"
    endpoint of a collapsed range instead of the "end" endpoint.
Commits on Aug 2, 2019
  1. UI Automation in Windows Console: Make UIA the default for Windows 10…

    codeofdusk authored and feerrenrut committed Aug 2, 2019
    … 1803 and later (PR #9771)
    
    NVDA's UIA console support significantly improves performance and stability, so we should enable it by default.
    
    While UIA in consoles was added in Windows 10 1709, the initial implementation left much to be desired, particularly concerning caret movement and expansion to character.
    
    A new `UIAUtils.shouldUseUIAConsole` function has been added which determines whether to use UIA in consoles:
    * If the user has explicitly chosen to use UIA or legacy console support, the function returns `True` or `False` respectively.
    * Otherwise, if the user is running at least Windows 10 1803, the function returns `True`, or `False` if not.
    
    The "use UI Automation in the Windows Console when available" GUI setting has been changed to expose all options in the config spec (i.e. to automatically detect UIA/legacy or override this autodetection).
    
    builds on #9614
    closes #673
    closes #6291
Commits on Aug 1, 2019
  1. UI Automation in Windows Console: improve reliability of visible rang…

    codeofdusk authored and feerrenrut committed Aug 1, 2019
    …e checks (PR #9957)
    
    Builds on #9614
    Supersedes #9735 and #9899
    Closes #9891
    
    Previously, after the console window was maximized (or the review cursor is otherwise placed outside the visible text), text review is no longer functional.
    The review top line and review bottom line scripts do not function as intended.
    
    This commit changes:
    - The isOffscreen property has been implemented as UIAUtils.isTextRangeOffscreen.
    - When checking if the text range is out of bounds, we now also check that oldRange is in bounds before stopping movement.
    - Re-implemented POSITION_FIRST and POSITION_LAST in terms of visible ranges.
  2. Improve keyboard support for some terminal programs (PR #9915)

    codeofdusk authored and feerrenrut committed Aug 1, 2019
    Previously:
    NVDA failed to announce typed characters and/or words in Mintty, and spells output close to the caret in 
    legacy Windows consoles.
    
    This commit factors out much of the code for handling typed characters in UIA consoles into a new
    `NVDAObjects.behaviors.TerminalWithoutTypedCharDetection class`. The class is now used in 
    Mintty (PuTTY, Git Bash) and legacy Windows consoles on Windows 10 version 1607 and later.
    
    In legacy Windows consoles, the old keyboard handling code is disabled when the class is in use, and the
    new support can be disabled in the advanced preferences in case it is incompatible with some programs 
    or if suppression of passwords is critical.
    
    Since legacy Windows consoles fire textChange rather slowly, this commit prefers faster responsiveness at 
    the cost of offscreen characters (such as passwords) always being reported. Users may disable "speak typed 
    characters" and/or "speak typed words" (using the existing scripts) when entering passwords to suppress 
    this output.
    
    On Windows 10 version 1607 with the new keyboard support enabled, spurious characters are reported 
    when the dead key (if available) is pressed.
    
    Fixes #513 
    Fixes #1348
    Related to #9614
Commits on Jul 31, 2019
  1. Ignore _expandCollapseBeforeReview in script_reviewStartOfLine. (PR #…

    codeofdusk authored and feerrenrut committed Jul 31, 2019
    …9944)
    
    This fixes an issue in UIA consoles, invoking the "review start of line" script (`shift+numpad 1` by default) does not move the review cursor.
    
    Expanding and collapsing the textInfo is essential for the functionality of this script (to move the textInfo to the start of the line), we should ignore the _expandCollapseBeforeReview flag.
    
    The _expandCollapseBeforeReview flag was added in #9614. It is True everywhere except in UIA consoles.
  2. Disable caret events in the UIA console (PR #9986)

    codeofdusk authored and feerrenrut committed Jul 31, 2019
    A regression caused during Python 3 migration.
    NVDA was announcing the final character of the prompt after backspacing text quickly.
    This can result in NVDA announcing "greater" after backspacing a line of text.
    
    Disable caret events in the UIA console and legacy consoles.
    This PR disables the caret movement event detection from #9933
Commits on Jul 10, 2019
  1. Pass the end argument to collapse in the super call. (PR #9887)

    codeofdusk authored and feerrenrut committed Jul 10, 2019
    Fixes #9875 
    
    When collapsing a ConsoleUIATextInfo, the end keyword argument was not properly handled. This caused strange behaviour during the 'say all' command in Windows Consoles using UIA.
Commits on Jul 3, 2019
  1. Update Espeak-ng to commit 67324cc. (PR #9854)

    codeofdusk authored and feerrenrut committed Jul 3, 2019
Commits on Jun 24, 2019
  1. V2 of UI Automation in Windows Console: work around Microsoft bugs on…

    codeofdusk authored and michaelDCurran committed Jun 24, 2019
    … Windows 10 version 1903 and improve caret movement (#9802)
    
    * Check-in winConsoleUIA.py.
    
    * Check-in editableText.py (without caret event handling)
    
    * Reduce _caretMovementTimeoutMultiplier for consoles to balance performance and ssh stability.
Commits on Jun 21, 2019
  1. UI Automation in Windows Console: work around Microsoft bugs on Windo…

    codeofdusk authored and michaelDCurran committed Jun 21, 2019
    …ws 10 version 1903 and improve caret movement (#9773)
    
    * Work around UIA caret/selection bugs in Windows 10 1903 and later.
    
    * On Windows 10, use UIA caret events for determining caret movement.
    
    * Remove hardcoded development value.
    
    * Move caret fixes to consoles.
    
    * Review actions.
Commits on Jun 17, 2019
  1. UI Automation in Windows Console: Remove "Text area", replace isAtLea…

    codeofdusk authored and michaelDCurran committed Jun 17, 2019
    …stWin10, and code cleanup (#9761)
    
    * isAtLeastWin10 -> isWin10(atLeast = True)
    
    * winConsoleUIA.winConsoleUIA -> winConsoleUIA.WinConsoleUIA for consistency.
    
    * Further renaming of winConsoleUIA -> WinConsoleUIA, and once again explicitly clear the word buffer when flushing queued chars.
    
    * Comments.
  2. UI Automation in Windows Console: remove the isTyping logic from UIA …

    codeofdusk authored and michaelDCurran committed Jun 17, 2019
    …consoles (#9673)
    
    * Remove the isTyping logic from UIA consoles.
    
    This makes autoread work with more console programs at the cost of a few typed characters possibly being echoed/doubled.
    
    * Meeting actions.
    
    * Fix Liblouis submodule maybe?
Commits on Jun 11, 2019
  1. UI Automation in Windows Console: add focus redirection for the UIA c…

    codeofdusk authored and michaelDCurran committed Jun 11, 2019
    …onsole main window (#9674)
    
    * Add focus redirection for the UIA console main window.
    
    * Implement winConsoleUIA.findExtraOverlayClasses.
    
    * If->elif
Commits on Jun 5, 2019
  1. UI Automation in Windows Console: limit blank lines in review and ini…

    codeofdusk authored and michaelDCurran committed Jun 5, 2019
    …tial word movement support (#9647)
    
    * Restrict the number of blank lines shown in console UIA's object review.
    
    Note: there are issues when reaching the bottom of the review (cursor gets stuck).
    
    * UIA console: only apply our custom move logic when not moving the caret.
    
    This should mostly restore caret movement support.
    
    * Add basic word movement support.
    
    * ConsoleUIATextInfo: support expantion by word.
    
    * consoleUIATextInfo._countCharsToEnd(reverse=True) is now consoleUIATextInfo._getCurrentOffset. The reverse option has been removed.
    
    * Cleanup.
    
    * Improve cursor placement after word movement.
    
    * Review actions (without changes to expand)
    
    * Re-implement expand.
    
    Note: this new approach includes characters after a line break in the current word.
    
    * Review actions.
    
    * Review actions.
    
    * Review actions.
    
    * Fix forward movement across lines.
    
    * UIAWinConsole support: Improve logic of moving previous word to no longer jump over the last word on the previous line.
    
    * Style.
  2. Move legacy console code to IAccessible and only enable UIA when avai…

    codeofdusk authored and michaelDCurran committed Jun 5, 2019
    …lable.
  3. UI Automation in Windows Console: make speaking of passwords configur…

    codeofdusk authored and michaelDCurran committed Jun 5, 2019
    …able (#9649)
    
    * Don't speak off-screen text (like passwords) in console windows.
    
    This approach works on my system, but needs wider testing.
    
    * Speaking of passwords is now configurable in UIA consoles, add accelerators for UIA console options in the GUI.
    
    * Clarify user guide.
    
    * Allow the password toggle to be restored.
Commits on Jun 3, 2019
  1. UI Automation in Windows Console: add STABILIZE_DELAY and improve "sp…

    codeofdusk authored and michaelDCurran committed Jun 3, 2019
    …eak typed words" (#9651)
    
    * Add a 30 ms STABILIZE_DELAY to the UIA console (identical to that in legacy consoles).
    
    This helps NVDA process large amounts of text.
    
    * unset _isTyping on interrupt characters, and clear the typed words buffer when enter or tab is pressed.
    
    Note: this will need to be investigated once #8110 is merged.
    
    * Cleanup.
    
    * Add \n
Commits on May 27, 2019
  1. Preliminary support for UI Automation in Windows Console (#9614)

    codeofdusk authored and michaelDCurran committed May 27, 2019
    * Add a feature flag for UIA console support.
    
    At the moment, it merely disables NVDA's existing console support, falling back to what UIA support is available in NVDA. The option is currently called `ConsoleUIA`, but we'll need to change this once autodetection is implemented (as there will be three options at that point).
    
    Typed characters are now spoken in UIA consoles, but characters are doubled when typing quickly, leading to incorrect typed word reporting.
    
    * Disable in-process injection for speak typed characters for now.
    
    This fixes the doubled characters bug, making speaked typed words function as intended, but it may have other implications.
    
    * Receive textChanged events from UIA and add consoleUIA and consoleUIATextInfo classes to implement automatic readout and work around a caret movement bug in Windows 10 version 1903.
    
    The consoleUIA class inherits from NVDAObjects.behaviors.Terminal, which serves as the foundation for automatic readout support. At the moment, it is likely that such support will either be not functional at all or report extraneous text from user input.
    
    * Introduce basic automatic readout support, and rename ConsoleUIATextInfo->consoleUIATextInfo for consistency.
    
    See the source code comments in this commit for some steps still incomplete.
    
    * Filter out extraneous characters by disabling live text reporting while a user is typing.
    
    This does not regress NVDA functionality, since we already cancel speech when the user types.
    
    * Cleanup.
    
    * Style, eliminate magic number, halve typing timeout, update label in GUI to inform the user that restarting NVDA is required to switch console implementations.
    
    * Clear isTyping when tab is pressed to announce tab completion.
    
    * Re-implement consoleUIA._getTextLines using UIATextPattern.GetVisibleRanges. This may improve performance when large amounts of text are written to the console, but possibly at the cost of less reliable autoread (particularly when the screen is refreshed or scrolled).
    
    * Review actions, style, update user guide.
    
    The user guide will need to be updated once auto-detection is introduced (and therefore the NVDA preference is changed).
    
    * Review actions.
    
    * Remove unneeded event_textChanged
    
    * Fix document review on Windows 10 1903.
    
    This fix adds a new textInfo instance variable, _expandCollapseBeforeReview, which stops review from expanding and immediately collapsing the textInfo during review. For some reason, this was causing object review to malfunction in this instance.
    
    * Remove 1903 warning from user guide.
    
    * Check bad UIA window class name at runtime.
    
    This allows for UIA console support to be dynamically enabled/disabled.
    
    Note: _UIAHandler.badUIAWindowClassNames has been removed. To check if a UIA windowClassName is bad, use the new _UIAHandler.UIAHandler._isBadUIAWindowClassName method.
    
    * Add a new winVersion.isAtLeastWin10 function for checking win10 builds with friendly version numbers, and only register for UIA textChange on Windows 10.
    
    * Misc review actions.
    
    * Review actions.
    
    * Change config spec
    
    * Meeting actions.
    
    * Make auto the default.
    
    * Use->force
    
    * Updated what's new.
    
    * Settings dialog: Ensure that the UIA in Windows Consoles option can be restored to default using the Advance Panel's restore to defaults button.
Commits on Mar 28, 2019
  1. Miranda NG: update autoread implementation for new versions of the cl…

    codeofdusk authored and michaelDCurran committed Mar 28, 2019
    …ient (#9367)
    
    * Fix #9053 for now.
    
    * Review actions.
    
    Co-Authored-By: codeofdusk <codeofdusk@gmail.com>
    
    * Update what's new.
Commits on Feb 26, 2019
  1. Developer guide: Fix error in example (PR #9326)

    codeofdusk authored and feerrenrut committed Feb 26, 2019
    Change `scriptHandler.script` to `script` to resolve a namespace error.
Commits on Jan 31, 2019
  1. MMC app module (#9118)

    codeofdusk authored and michaelDCurran committed Jan 31, 2019
    * Fixed #1486.
    
    This commit fixes #1486 by adding a custom app module for the Microsoft Management Console.
    
    * Review actions.
    
    * Review items.
    
    * New implementation based on focus redirect and gainFocus events
    
    * Use an overlay for table cells
    
    * Style.
    
    * Style.
    
    * Cosmetics
    
    * Update what's new.
Commits on Jan 7, 2019
  1. Report the presence of formulae in Lotus Symphony-based spreadsheets (#…

    codeofdusk authored and michaelDCurran committed Jan 7, 2019
    …9115)
    
    * Fixed #860
    
    This commit fixes #860 by checking the "Formula" IAccessible2 attribute exposed by Lotus Symphany based spreadsheet applications and adding the STATE_HASFORMULA where needed.
    
    * App modules/Lotus Symphoniy suite: updated copyright headers
    
    * Update source/appModules/soffice.py
    
    Co-Authored-By: codeofdusk <codeofdusk@gmail.com>
    
    * Update what's new.
  2. Report legends on tab pages when tabbing or using quick navigation (#…

    codeofdusk authored and michaelDCurran committed Jan 7, 2019
    …9116)
    
    * Fixed #709.
    
    This commit fixes #709 by expanding the check introduced in #3321 for property pages.
    
    * Update what's new.
You can’t perform that action at this time.