-
-
Notifications
You must be signed in to change notification settings - Fork 736
Magnifier implementation #19228
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
base: master
Are you sure you want to change the base?
Magnifier implementation #19228
Conversation
f5a86b5 to
7b3ee4f
Compare
|
Here's what I still have to work on:
I'll work on that tomorrow |
|
I have not done an in-depth review, but here are points that I have noted: Screen curtain conflictIf NVDA magnifier is applying color filters, this conflicts with NVDA's Screen Curtain, since they both use the color transformation matrix. Trying to enable or disable in any order creates unexpected issues. Thus:
DocumentationA section in the User Guide as well as a Change log item ("New features" section) are required. The description in the User Guide should help understand if the feature is implemented as expected. LoggingYou are using Again, thanks for this work. I had not yet tested all the features, but the spotlight seems a very nice one (visual double check needs to be done by someone else than I though). |
|
I'll try to see what I can do for the screen curtain, but if is there a reason someone that uses screen curtain would use the magnifier and the other way around? I'm not sure both are used by the same users. for the log.info, I was going to remove them anyway when everything was clean, it's just helpfull for me to see where I'm at. I'm kinda lost on where and what I should do for Documentation, is there a way you could give me a placeholder on the files I should change? |
I am such a user. Today, I use NVDA speech feedback as main information channel, in conjunction with Windows Magnifier (with color filter inverted colors) as additional information channel. In case I work with sensitive information, I activate Screen Curtain and use only speech channel. Today, I need to exit Magnifier or to remove color filter before enabling Screen Curtain, and to reopen Magnifier or to restore color filter after I have finished with Screen Curtain. Being able to enable and disable screen curtain keeping the same Magnifier configuration would be a plus. Regarding the other way around, i.e. enabling / disabling Magnifier while Screen curtain is active, I have no real use cases in mind. But I can imagine these ones:
OK. Nice.
The Change log is at The User Guide is at First, in section " Also, it seems quite likely that describing the panel's options is not enough. Since the Magnifier will be a full NVDA specific feature (not just a little feature), it needs to be described in its own section. I think that you need to write a "
Only English documentation needs to be updated; the documentation in other languages will then be updated by translators from the English one. |
|
Thanks for the feedback! |
|
i have a hard time making a way to switch between magnifier and the Screen Curtain without errors, so I kept it it simple for now with just preventing one to launch if the other is enabled, I will still try to find a way to make it work as Cyrille said it would be a good point to be abble to toggle them. |
|
So the solution I've found was to prevent magnifier to launch if screen curtain is active.
|
|
I think the behaviour with screen curtain is whatever gets activated should just deactivate the other. However, in settings, we need to make sure both aren't activated at the same time. We should add checks when saving settings to ensure NVDA won't start trying to enable both screen curtain and magnifier. When enabling each, check if the other is active, and if so, disable it. |
|
Actually I think the behaviour with screen curtain as you've designed is fine for now. It ensures the person intentionally wants to deactivate screen curtain. |
seanbudd
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @Boumtchack, the docs here are really good. I've reviewed everything except the tests
.pre-commit-config.yaml
Outdated
| # - repo: https://github.com/DavidAnson/markdownlint-cli2 | ||
| # rev: v0.18.1 | ||
| # hooks: | ||
| # - id: markdownlint-cli2 | ||
| # name: Lint markdown files | ||
| # args: ["--fix"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # - repo: https://github.com/DavidAnson/markdownlint-cli2 | |
| # rev: v0.18.1 | |
| # hooks: | |
| # - id: markdownlint-cli2 | |
| # name: Lint markdown files | |
| # args: ["--fix"] | |
| - repo: https://github.com/DavidAnson/markdownlint-cli2 | |
| rev: v0.18.1 | |
| hooks: | |
| - id: markdownlint-cli2 | |
| name: Lint markdown files | |
| args: ["--fix"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please apply this change
Why? I have tried to describe a valid use case in #19228 (comment), where screen curtain would be enabled for a short time while Magnifier is already active. Note that I have not tested last devs of @Boumtchack against that use case. |
|
@CyrilleB79 - did you miss my follow up message #19228 (comment)
|
Oh sorry, OK. From my quick reading of the description it sounds fine. |
|
|
||
| return [i * cls.STEP_FACTOR for i in range(start, end + 1)] | ||
|
|
||
| @classmethod |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This suggestion was not applied #19228 (comment)
.pre-commit-config.yaml
Outdated
| # - repo: https://github.com/DavidAnson/markdownlint-cli2 | ||
| # rev: v0.18.1 | ||
| # hooks: | ||
| # - id: markdownlint-cli2 | ||
| # name: Lint markdown files | ||
| # args: ["--fix"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please apply this change
| @@ -0,0 +1,458 @@ | |||
| # A part of NonVisual Desktop Access (NVDA) | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do these tests actually invoke magnification on your machine? i.e. will the screen magnification change while running tests? We may need to isolate them if that's the case, as running unit tests shouldn't effect the state of a users machine.
Link to issue number:
Closes #12539
Summary of the issue:
This pull request introduces a new NVDA magnifier feature, including docked and lens magnifier modes, color filter support, and a set of global commands for controlling magnification. The changes add new classes for handling magnifier windows, provide optimized color filtering, and implement keyboard shortcuts for toggling magnification, zooming, cycling modes, and color filters.
Description of user facing changes:
Implemented new script commands in globalCommands.py for starting/stopping the magnifier, zooming in/out, cycling color filters, toggling fullscreen mode, cycling magnifier types, and spotlighting the magnifier window, each with descriptive messages and gestures.
Description of developer facing changes:
Description of development approach:
Creating 3 types of magnifier that will be called based on prefered choice of the user. each one got his class and will share settings through parents class
Testing strategy:
unit test
Known issues with pull request:
Code Review Checklist: