increase magnifier zoom level to 5000% and change zoom to percentages#20139
Conversation
There was a problem hiding this comment.
Pull request overview
This PR changes NVDA Magnifier zoom configuration from ratio values to percentage values, increases the maximum zoom level, and replaces the zoom combo box with an integer spin control.
Changes:
- Converts magnifier zoom config/schema from floats like
2.0to integer percentages like200. - Updates magnifier calculations to convert percentage zoom back to ratio for Windows Magnification APIs.
- Adds a stepped spin control for zoom settings and a config upgrade step.
Reviewed changes
Copilot reviewed 8 out of 10 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
user_docs/en/userGuide.md |
Updates documented magnifier zoom options. |
source/gui/settingsDialogs.py |
Replaces the zoom choice control with a stepped spin control. |
source/gui/nvdaControls.py |
Adds SpinStepCtrl for stepped integer spin behavior. |
source/config/profileUpgradeSteps.py |
Adds schema upgrade logic for ratio-to-percentage zoom values. |
source/config/configSpec.py |
Bumps schema version and changes magnifier zoom config type/range. |
source/_magnifier/magnifier.py |
Adds percentage-to-ratio zoom handling and validates percentage zoom values. |
source/_magnifier/fullscreenMagnifier.py |
Uses ratio zoom values for fullscreen magnification calculations/API calls. |
source/_magnifier/config.py |
Updates zoom constants, formatting, getters, and setters for percentage values. |
|
I was curious about the desire to change from 1x, 2x, etc to a percentage. So, I went off to see what I could find about how other magnifiers work:
On Linux, I found a list of four of the most popular magnifiers: https://www.linuxlinks.com/best-free-open-source-linux-magnifying-tools/ so based on that:
So, to summarize, from the 12 I found: Given that, I'm half tempted to lean towards multiplier since it's what most use, but I can also see the attraction of percent, since it's what Windows magnifier uses. |
|
@Qchristensen - do you have a suggestion for a type of control that will work for a ratio (e.g. float with decimal values)? The wxWidgets version of a spin control that goes by fractional increments isn't accessible so we can't use that. Previously we were using a dropdown, but that is way too long for a range that goes up to 30-40x. A slider seems awkward and inefficient. |
In any case, with so many values, the zoom in / zoom out commands are quite inefficient at high zoom level because only one keypress has a quite unsignificant effect, i.e. zooming from 48x to 49x is hardly noticeable while zooming from 2x to 3x makes a great difference. IIRC, Zoomtext uses a dropdown / combo box control and goes until 60x. But it uses a non-linear set of values, e.g. 1, 1.2, 1.4, 1.6, 1.8, 2, 2.25, 2.5, 2.75, 3, 3.5, 4, 4.5, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 36, 42, 48, 54, 60. If we go with a max level so high as 50x, I really think that such a non-linear scale should be implemented. I also prefer 2x with respect to 200%. It's a bit easier to understand, especially at higher zoom levels, e.g. more than 200%. And it's also shorter to hear when spoken. |
|
Perhaps a spin edit? While this PR is partly to increase the maximum zoom (whether we call it 5000% or 50x - and I tend to agree with using 1x, 2x, 50x etc rather than percent) - I expect the majority of users will want it set somewhere between 2x - 5x (200% - 500%). I agree with using some kind of scale where there are more options at the lower end (1x, 1.25x, 1.5x) than the higher end (40x, 45x, 50x). In any case, if the spin adjusted to whatever scale we worked out there, it could be possible to manually enter a value of your own - whether that was 48x or 2.375x? which might also resolve the question of customisation beyond whatever defaults we put in? |
|
As mentioned before, we don't have an accessible spin edit control available for decimal/fractional numbers. Our choices, as far as I know, are:
|
|
@CyrilleB79 - we think it's valuable to be able to granularly increase the zoom size. I think we'd instead want a separate issue/feature to add the ability to create a preset list of preferred zoom values, and gestures to cycle back/forth through them. |
Double checked in Zoomtext.
Yes, we may try this in alpha/beta and see if people make negative feedback. |
|
Ok, I will open a new issue for adding a zoom preset list, and change the reporting for zoom in this PR to |
|
Unit tests need to be fixed it seems |
Link to issue number:
Fixes #19486
Summary of the issue:
Description of user facing changes:
Description of developer facing changes:
Added a
StepSpinCtrlthat allows step values for integer spin controlsDescription of development approach:
Testing strategy:
Known issues with pull request:
None
Code Review Checklist: