Skip to content

Commit b9b153a

Browse files
authored
Merge 98fa3bf into b53692a
2 parents b53692a + 98fa3bf commit b9b153a

3 files changed

Lines changed: 26 additions & 28 deletions

File tree

source/NVDAState.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,27 @@ def _getExitCode() -> int:
4444

4545
def _setExitCode(exitCode: int) -> None:
4646
globalVars.exitCode = exitCode
47+
48+
49+
class _TrackNVDAInitialization:
50+
"""
51+
During NVDA initialization,
52+
core._initializeObjectCaches needs to cache the desktop object,
53+
regardless of lock state.
54+
Security checks may cause the desktop object to not be set if NVDA starts on the lock screen.
55+
As such, during initialization, NVDA should behave as if Windows is unlocked,
56+
i.e. winAPI.sessionTracking._isLockScreenModeActive should return False.
57+
"""
58+
59+
_isNVDAInitialized = False
60+
"""When False, _isLockScreenModeActive is forced to return False.
61+
"""
62+
63+
@staticmethod
64+
def markInitializationComplete():
65+
assert not _TrackNVDAInitialization._isNVDAInitialized
66+
_TrackNVDAInitialization._isNVDAInitialized = True
67+
68+
@staticmethod
69+
def isInitializationComplete() -> bool:
70+
return _TrackNVDAInitialization._isNVDAInitialized

source/core.py

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -453,32 +453,6 @@ def _initializeObjectCaches():
453453
api.setMouseObject(desktopObject)
454454

455455

456-
class _TrackNVDAInitialization:
457-
"""
458-
During NVDA initialization,
459-
core._initializeObjectCaches needs to cache the desktop object,
460-
regardless of lock state.
461-
Security checks may cause the desktop object to not be set if NVDA starts on the lock screen.
462-
As such, during initialization, NVDA should behave as if Windows is unlocked,
463-
i.e. winAPI.sessionTracking._isLockScreenModeActive should return False.
464-
465-
TODO: move to NVDAState module
466-
"""
467-
468-
_isNVDAInitialized = False
469-
"""When False, _isLockScreenModeActive is forced to return False.
470-
"""
471-
472-
@staticmethod
473-
def markInitializationComplete():
474-
assert not _TrackNVDAInitialization._isNVDAInitialized
475-
_TrackNVDAInitialization._isNVDAInitialized = True
476-
477-
@staticmethod
478-
def isInitializationComplete() -> bool:
479-
return _TrackNVDAInitialization._isNVDAInitialized
480-
481-
482456
def _doLoseFocus():
483457
import api
484458
focusObject = api.getFocusObject()
@@ -765,7 +739,7 @@ def run(self):
765739
from winAPI import sessionTracking
766740
sessionTracking.initialize()
767741

768-
_TrackNVDAInitialization.markInitializationComplete()
742+
NVDAState._TrackNVDAInitialization.markInitializationComplete()
769743

770744
log.info("NVDA initialized")
771745

source/winAPI/sessionTracking.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
from baseObject import AutoPropertyObject
3232
from logHandler import log
33+
from NVDAState import _TrackNVDAInitialization
3334

3435
from .types import HWNDValT
3536
from ._wtsApi32 import (
@@ -177,7 +178,6 @@ def isWindowsLocked() -> bool:
177178

178179

179180
def _isWindowsLocked() -> bool:
180-
from core import _TrackNVDAInitialization
181181
if not _TrackNVDAInitialization.isInitializationComplete():
182182
# Wait until initialization is complete,
183183
# so NVDA and other consumers can register the lock state

0 commit comments

Comments
 (0)