diff --git a/source/_magnifier/commands.py b/source/_magnifier/commands.py index 1a50df3a719..54efdd3483f 100644 --- a/source/_magnifier/commands.py +++ b/source/_magnifier/commands.py @@ -17,7 +17,9 @@ getFullscreenMode, ZoomLevel, getFollowState, + setFilter, setFollowState, + setFullscreenMode, toggleAllFollowStates, ) from .magnifier import Magnifier @@ -171,11 +173,13 @@ def toggleFilter() -> None: magnifier, MagnifierAction.TOGGLE_FILTER, ): + assert isinstance(magnifier, FullScreenMagnifier) filters = list(Filter) idx = filters.index(magnifier.filterType) magnifier.filterType = filters[(idx + 1) % len(filters)] if magnifier._magnifierType == MagnifierType.FULLSCREEN: magnifier._applyFilter() + setFilter(magnifier.filterType) ui.message( pgettext( "magnifier", @@ -255,12 +259,14 @@ def toggleFullscreenMode() -> None: magnifier, MagnifierAction.CHANGE_FULLSCREEN_MODE, ): + assert isinstance(magnifier, FullScreenMagnifier) modes = list(FullScreenMode) currentMode = magnifier._fullscreenMode idx = modes.index(currentMode) newMode = modes[(idx + 1) % len(modes)] log.debug(f"Changing full-screen mode from {currentMode} to {newMode}") magnifier._fullscreenMode = newMode + setFullscreenMode(newMode) ui.message( pgettext( "magnifier", diff --git a/source/_magnifier/magnifier.py b/source/_magnifier/magnifier.py index fed233a8a79..ef2aa3195f0 100644 --- a/source/_magnifier/magnifier.py +++ b/source/_magnifier/magnifier.py @@ -8,7 +8,7 @@ Implements the magnifier global class and its basic functionalities. """ -from typing import Callable +from collections.abc import Callable from comtypes import COMError from logHandler import log import wx @@ -30,9 +30,10 @@ getZoomLevel, getPanStep, getFilter, - ZoomLevel, isTrueCentered, + setZoomLevel, shouldKeepMouseCentered, + ZoomLevel, ) from .utils.focusManager import FocusManager @@ -79,6 +80,7 @@ def zoomLevel(self, value: float) -> None: closestZoom = min(validZoomValues, key=lambda x: abs(x - value)) log.warning(f"Invalid zoom level {value}, using closest valid value {closestZoom}") value = closestZoom + setZoomLevel(value) self._zoomLevel = value def _getScreenLimits(self) -> tuple[int, int, int, int]: diff --git a/tests/unit/test_magnifier/test_magnifier.py b/tests/unit/test_magnifier/test_magnifier.py index 270fa8f43c6..aa7e84469b3 100644 --- a/tests/unit/test_magnifier/test_magnifier.py +++ b/tests/unit/test_magnifier/test_magnifier.py @@ -47,6 +47,8 @@ def setUp(self): super().setUp() self.magnifier = Magnifier() + self.magnifier.zoomLevel = 2.0 # Set a default zoom level for testing + self.magnifier._filterType = Filter.NORMAL # Set a default filter type for testing self.screenWidth = getPrimaryDisplayOrientation().width self.screenHeight = getPrimaryDisplayOrientation().height