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

Test #23

Merged
merged 740 commits into from
Aug 22, 2024
Merged

Test #23

merged 740 commits into from
Aug 22, 2024

Conversation

SaschaCowley
Copy link
Owner

Closes #21

Link to issue number:

Summary of the issue:

Description of user facing changes

Description of development approach

Testing strategy:

Known issues with pull request:

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

seanbudd and others added 30 commits May 17, 2024 12:56
On my machine (set to 1080p), after a while, NVDA repeatedly says "lanscape". In the Python console, I get:

>>> _displayTracking.getPrimaryDisplayOrientation()
OrientationState(width=1920, height=1080, style=<Orientation.PORTRAIT: 1>)
However, since 1920 is greater than 1080, getPrimaryDisplayOrientation().style should be Orientation.LANDSCAPE.

Description of how this pull request fixes the issue:
Declare parameter names in the call to _getOrientationStyle.
Fixes nvaccess#16487

Summary of the issue:
currently the lang attribute for the developerGuide has the value "developerGuide": nvaccess.org/files/nvda/releases/2024.1/documentation/developerGuide.html

This is because the parent folder name is used to determine the lang code, which is true for other docs.

Description of user facing changes
Fix lang code for the developer Guide

Description of development approach
Fix lang code for the developer Guide
…s#16571)

Closes nvaccess#16559
Closes nvaccess#16558

Summary of the issue:
Fancy QuickNav commands (style navigation, text navigation, vertical navigation) don't work correctly in Kindle desktop app.

Description of user facing changes
Fancy quickNav commands will be disabled in Kindle.

Description of development approach
Throwing a NotImplementedException.
…ccess#16569)

Closes nvaccess#16459
Closes nvaccess#16408
Closes nvaccess#16458
Closes nvaccess#16405

Summary of the issue:
We have discovered multiple problemds with non-UIA textInfo implementation in MS Word. Some examples are nvaccess#16527, nvaccess#16459, nvaccess#16458. Also TextInfo implenetation in Outlook has proven to be too slow for style navigation. Therefore disabling both.

Description of user facing changes
"Not supported in this document" message is spoken.

Description of development approach
Raising an error when Outlook or non-UIA Word is detected.
…ridge (nvaccess#16568)

Fixes nvaccess#9376.

Summary of the issue:
In applications using Java Access Bridge, if the last line of a text is an empty line, then NVDA reads the previous line as the last line.

Description of user facing changes
NVDA will now correctly read the last empty line as "blank".

Description of development approach
The issue is related to fixes of nvaccess#1892 in 7ef99c3, which work around the line bounds returned by JAB for the last character of a text. Specifically, the current behavior is to get the line bounds of the previous character, which works well for single-line text inputs. But if the text is multi-line, and we're on the last empty line, then getting the line bounds of the previous character results in repeating the penultimate line.

The fix is to separately handle the case of empty last line, which is determined by having "\n" as the previous character.
Fixup of nvaccess#16425
Discussed here: groups.io/g/nvda-translations/message/3819

Summary of the issue:
In 2023.2, the user guide heading numbering for the Arabic translation switched to using Western Arabic numbering.
2024.1 mistakenly switched this back to Eastern Arabic numbering.
In nvaccess#16425, the headers in the table of contents were fixed for Western Arabic, but not in the body.

Description of user facing changes
Restore Western Arabic numbering style for headings in the body of the document

Description of development approach
Updated CSS to reflect Western Arabic numbering style i.e. .1.2.3, .1.2.4
NV Access is intending to move most of the wiki into the repository, so changes are tracked better and easier to propose.
The documentation for translating NVDA is very dated, particularly since the update of the translation system.

Description of user facing changes
In order to start the process of updating and migrating the translating documentation, the first page was moved from the wiki:
https://github.com/nvaccess/nvda/wiki/Translating

The following changes were made to update the contents:

the translation status links to Crowdin, which neatly tracks the status for the NVDA interface. Instructions for generating structured diffs to check the status of user docs will be linked when they are made.
warnings are added to note that docs are out of date in general, until all referenced pages are updated
links to the manual process are removed. The manual process was only ever documented for the interface, which has moved crowdin. References to this page will be removed.
references to text2tags were updated to markdown, such as removing references to the no longer needed locale.t2tconf
Additionally, some grammar and formatting fixes were made such as new lines
Removed "Missing information" now that this in the repo, normal issues/PRs apply
…6550)

closes nvaccess#16456

Summary of the issue:
There are often two BrailleHandler.update executions which produce duplicate log entries when log level is debug. As an example, when navigating with up/down arrows in notepad debug level log shows this.

There should not be good reason for two executions.

Description of user facing changes
Less duplicate "Braille window dots" log lines on debug level. This should facilitate debugging a little.

Description of development approach
removed updateDisplay call from BrailleBuffer.scrollTo
…ry (nvaccess#16583)

updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Closes nvaccess#16466

Summary of the issue:
Several speech synthesizers and braille tables are unable to speak or braille some characters, such as ligatures ("ij") or decomposed characters (latin letters with a modifier to add acute, diaeresis, etc.). Also, italic or bold Unicode characters can't be spoken or brailled by default.

Description of user facing changes
None by default. If unicode normalization is enabled for speech, speech output for objects and text navigation is normalized. For braille, normalization is applied for all braille output.

The reason for speech to apply normalization only for objects and text navigation is chosen on purpose, as for individual character navigation or text selection, we really want to pass the original character to the synthesizer. If we don't Unicode bold and italic characters are read as their normalized counterparts, which makes it impossible to distinguish them. This problem is less relevant when working with braille.

Description of development approach
Added UnicodeNormalizationOffsetConverter to textUtils with tests. It stores the normalized version of a given string and based on diffing, calculates offset mappings between the original and normalized strings.
Processes output using UnicodeNormalizationOffsetConverter when translating braille with normalization on. The several mappings (braille to raw pos, raw to braille pos) are processed to account for normalization.
Added normalization to getTextInfoSpeech and getPropertiesSpeech.
…16586)

This reverts commit ed5ede9.

Reverts nvaccess#16505

Issues fixed
None

Issues reopened
None

Reason for revert
The approach in nvaccess#16505 appears incorrect.
Admin level is requested when generating the uninstaller, not when running it.
It is also dubious if the original issue is valid.

Can this PR be reimplemented? If so, what is required for the next attempt
An issue should be filed first and investigated
…cess#16587)

Summary of the issue:
setuptools has been updated, breaking support with py2exe: py2exe/py2exe#208.

When installing packages, pip automatically pulls in the latest build dependences as specified in PEP 518.
pip creates a custom temporary build environment to install packages using the latest pip environment.

Description of development approach
Create a pyproject.toml to specify the build environment we are using.
packaging.python.org/en/latest/guides/writing-pyproject-toml

Use the flag no-build-isolation when installing requirements.txt.
This prevent pip from using the custom build environment and automatically pulling the latest setuptools when installing packages.

As such, we need to manually install the desired version of setuptools, and manually install pip's dependency wheel.
stackoverflow.com/questions/62889093/what-does-no-build-isolation-do
…s#16551)

Fixes nvaccess#14550

Summary of the issue:
NVDA does not correctly announce checkbox or radio button menuitems when first entering submenues in Firefox or Chrome, as its announcement of the menuitem is disrupted by its announcement of the containing menu or grouping.

Description of user facing changes
Checkbox and radio button menuitems are correctly read in Chrome and Firefox.

Description of development approach
Updated FocusLossCancellableSpeechCommand.isMenuItemOfCurrentFocus to:

Detect objects with role IA2_ROLE_CHECK_MENU_ITEM or IA2.IA2_ROLE_RADIO_MENU_ITEM as well as oleacc.ROLE_SYSTEM_MENUITEM; and
Traverse up the old focus's ancestors to find the ancestor menu, instead of assuming that it will be its parent, to support grouped menuitems.
…vaccess#16585)

Fixes nvaccess#16554

Summary of the issue:
nvaccess#16471 introduced a regression whereby many blank lines were reported in browse mode.

Description of user facing changes
Extraneous blank lines are no longer reported in browse mode.

Description of development approach
Updated checks in gecko_ia2.cpp:

Check that the length of name is non-zero (SysStringLen returns 0 if the BSTR passed is null)
Added check that description's value is not the empty string, as checking that it has a value is necessary but not sufficient.
…irefox (nvaccess#16588)

Fixes nvaccess#5183

Summary of the issue:
In Firefox, tables labelled with aria-label or aria-labelledby (where the referenced element is not visible) do not have a virtual buffer node inserted with the accessible name of the table.

Description of user facing changes
Tables now have this node inserted in Firefox, as they already do in Chrome.

Description of development approach
Since Firefox returns the empty string if no description is given (rather than null as returned by Chrome), update gecko_ia2.cpp to check for the empty string as well as null.
…nvaccess#16589)

Fixes nvaccess#16318

Summary of the issue:
Recently the poedit appModule was rewritten to support poedit 3.4. However, scripts for reading translation nodes, comments and old source text did not function for languages that had no plurals (Chinese) or 2 or more plurals (Polish). It did however function for languages with exactly one plural (such as French).
As the controlIDs for windows in poedit are not static, but do stay relative to each other, the appModule originally used offsets from the main dataView control. This worked okay for the translation warning, but did not work for controls in the sidebar in all cases, as it seems that there are extra controlIDs consumed for some hidden windows between the main splitter and the sidebar, depending on how many plurals a language has.
E.g. In French, the controlID offset for the Sidebar (relative to the Dataview control) is 29. In Chinese it is 27, and in Plish it is 33. I think it might be roughly two offsets per plural.

Description of user facing changes
Poedit scripts such as Report translation notes (control+shift+a), Report comments (control+shift+c) and Report old source text (control+shift+o) now function no matter how many plurals a language has.

Description of development approach
Control ID offsets for controls in the sidebar (such as translation notes, old source text, and comments) are now relative to the sidebar itself, rather than the Dataview control.
The sidebar window is located by first finding the main splitter window (using a controlID relative to the dataview control) and then finding the next visible sibling window from there.
To aide in refactoring, support for controlID offsets in the Pro version are now handled by simply minusing 5 from the given controlID offset, as all the offsets in the pro version differed by 5.
Testing strategy:
Fixes nvaccess#16546

Summary of the issue:
Style navigation is too slow in MSWord even with UIA enabled.

Description of user facing changes
Message "not supported in this document" is spoken when trying style navigation in MSWord.

Description of development approach
I did a bit of refactoring. Instead of trying to catch all the conditions in browseMode.BrowseModeDocumentTreeInterceptor, I overrode _iterTextStyle() method in corresponding child subclasses.
Related to nvaccess#16345.

Summary of the issue:
Multiple dots are reported as "padding dots" in situations where these dots have no padding function. "padding" is too restrictive and is also more difficult to understand; by the way, some translators have actually translated "padding dots" to "multiple dots" in their translations.

Description of user facing changes
Multiple dots (4 or more) will now be reported with the more neutral "multiple dots" instead of "padding dots" when the symbol level is high enough.

Description of development approach
Changed both the symbol name and what is reported in symbol file.
jcsteh and others added 26 commits June 28, 2024 10:56
…evious character is a line feed. (nvaccess#16763)

Fixup of nvaccess#16745.

Summary of the issue:
In my work on nvaccess#16745, I neglected to consider an empty line after a line feed. In that case, adjusting for the line end caused NVDA to read from the previous line instead of the empty one.

Description of user facing changes
In Firefox, NVDA no longer speaks the previous line when the caret is on the last line and the last line is empty. However, this does not need a change log entry because this bug never shipped in release.

Description of development approach
Don't set the _isInsertionPointAtEndOfLine flag to True if the previous character is a line feed. This prevents the line end adjustment.

Because this additional check makes the code a little more complex, I refactored this code into a helper method.
Fixes nvaccess#16735

Summary of the issue:
This adds Turkish grade 2 braille table to NVDA interface.

Description of user facing changes
Users will be able to use the table provided in NVDA

Description of development approach
Modified the brailleTables.py.
Fixes nvaccess#14817

Summary of the issue:
Our linting system has the following issues:

we are stuck on an old version of flake8, as the flake8tabs module is no longer being updated
we can't perform automatic lint fixes
Ruff is becoming more maintained than flake8
Description of user facing changes
The entire repository is linted with Ruff, rather than diffs
Developers can now automatically fix certain linting issues with runlint.bat
If using pre-commit hooks, linting is automatically applied: pre-commit.com/#usage
CodeRabbit now scans code using our Ruff config
Description of development approach
integrate Ruff, migrate flake8 config
Update AppVeyor scripts to use ruff
add pre commit hook support for ruff
update linting docs
Lint the repository with Ruff

This is a follow up for nvaccess#16751
Must be merge commit not squash merge

Using nvaccess#16751, the following commands were applied:

ruff check --fix to apply automatic fixes
ruff check --add-noqa to add no-qa comments to all lint failures, so that issues that can't be automatically fixed don't trigger future failures
Start the dev cycle for the 2024.4 release.
This won't be a compatibility breaking release.
… doesn't support 2 channels. (nvaccess#16771)

Fixes nvaccess#16770.

Summary of the issue:
WasapiWavePlayer.setVolume assumes that the audio device supports 2 channels. Some devices do not. This causes an exception when trying to set the second channel.

Description of user facing changes
Playing NVDA sounds no longer fails on a mono audio device.

Description of development approach
Catch E_INVALIDARG which is the documented error code for this situation. Alternatively, we could check the number of channels before trying to set, but I don't think there's any benefit to that approach and that would require more C++ code.

I also removed _wasPlay_errcheck. That was never actually called and was unnecessary because raising an exception for a failure is already handled by setting .restype to HRESULT. Furthermore, _wasPlay_errcheck was raising WindowsError with the wrong parameters, so it wouldn't have been what we wanted even if it had worked.
nvaccess#16753)

NVDA is licensed with GPL2 which is incompatible with certain licenses like Apache.
Currently there are 2 python dependencies bundled with NVDA with incompatible licenses:

fast-diff-match-patch - see Reconsider fast_diff_match_path license violation workaround nvaccess#16633
requests
Description of user facing changes
Developers can now check licenses with runlicensecheck.bat
AppVeyor checks that new dependencies with incompatible licenses aren't introduced
Description of development approach
Using the licensecheck pip dependency, check licenses
Similar to lint checks, run these checks on appveyor builds
…ss#16718)

Closes nvaccess#16656

Summary of the issue:
NV Access is intending to move most of the wiki into the repository, so changes are tracked better and easier to propose.
The documentation for translating NVDA is very dated, particularly since the update of the translation system.

Description of user facing changes
This wiki page was moved and updated in the project docs

Translating the interface
The following changes were made to update the contents:

grammar and formatting fixes
add reference to user guide commands for PoEdit
remove section on translating using a text editor
added information on:
on using Crowdin and proofreader status
plural forms
pgettext (context/tags)
@SaschaCowley SaschaCowley merged commit 50c1284 into master Aug 22, 2024
@github-actions github-actions bot added this to the 2024.4 milestone Aug 22, 2024
@SaschaCowley SaschaCowley deleted the test branch August 22, 2024 04:56
SaschaCowley pushed a commit that referenced this pull request Aug 22, 2024
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.

Please add a feature