Magnifier checkbox fix (#20503)
fixes #20148
Summary of the issue:
When the NVDA Magnifier fails to start (Windows Magnifier already running, or screen curtain active), NVDA still announced it was enabled, and the failure was only spoken. From #20148 comments, a GUI action should show the error in a message box like the screen curtain does.
Description of user facing changes:
On a failed start, NVDA no longer announces the magnifier as enabled. Keyboard commands still speak the reason; the settings panel now shows it in an error message box and leaves the checkbox correctly unchecked.
Description of developer facing changes:
_startMagnifier now raises MagnifierStartError (carrying a translatable message) instead of speaking inline. start() propagates it and keeps config in sync via try/finally. toggleMagnifier takes an onStartError callback (speech by default; the GUI passes a message box).
Description of development approach:
Separate the start action from how its failure is presented: raise an exception and let each caller present it in its own way. The beta merge kept _isBlockedByScreenCurtain (including startup deferral) but swapped its inline speech for the exception. Tests updated to assert the raise, plus new toggle coverage.