Compare commits
2 Commits
29a6c3eb42
...
e8bc34eaf5
| Author | SHA1 | Date | |
|---|---|---|---|
| e8bc34eaf5 | |||
| f84167a7fb |
@@ -172,6 +172,7 @@ class SpeechHistoryManager:
|
|||||||
str([1, ["KEY_KPENTER"]]): [1, ["KEY_KPENTER"]],
|
str([1, ["KEY_KPENTER"]]): [1, ["KEY_KPENTER"]],
|
||||||
str([1, ["KEY_ESC"]]): [1, ["KEY_ESC"]],
|
str([1, ["KEY_ESC"]]): [1, ["KEY_ESC"]],
|
||||||
}
|
}
|
||||||
|
self._refresh_input_bindings()
|
||||||
|
|
||||||
def _restore_bindings(self):
|
def _restore_bindings(self):
|
||||||
if self.bindings_backup is not None:
|
if self.bindings_backup is not None:
|
||||||
@@ -180,3 +181,21 @@ class SpeechHistoryManager:
|
|||||||
self.env["rawBindings"] = self.raw_bindings_backup
|
self.env["rawBindings"] = self.raw_bindings_backup
|
||||||
self.bindings_backup = None
|
self.bindings_backup = None
|
||||||
self.raw_bindings_backup = None
|
self.raw_bindings_backup = None
|
||||||
|
self._reset_input_state()
|
||||||
|
self._refresh_input_bindings()
|
||||||
|
|
||||||
|
def _reset_input_state(self):
|
||||||
|
try:
|
||||||
|
self.env["runtime"]["InputManager"].reset_input_state()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _refresh_input_bindings(self):
|
||||||
|
try:
|
||||||
|
refresh_grabs = getattr(
|
||||||
|
self.env["runtime"]["InputDriver"], "refresh_grabs", None
|
||||||
|
)
|
||||||
|
if refresh_grabs:
|
||||||
|
refresh_grabs(force=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|||||||
@@ -5,4 +5,4 @@
|
|||||||
# By Chrys, Storm Dragon, and contributors.
|
# By Chrys, Storm Dragon, and contributors.
|
||||||
|
|
||||||
version = "2026.05.21"
|
version = "2026.05.21"
|
||||||
code_name = "testing"
|
code_name = "master"
|
||||||
|
|||||||
@@ -16,11 +16,15 @@ def build_speech_history_manager(history_size=3):
|
|||||||
settings_manager = Mock()
|
settings_manager = Mock()
|
||||||
settings_manager.get_setting_as_int.return_value = history_size
|
settings_manager.get_setting_as_int.return_value = history_size
|
||||||
memory_manager = Mock(add_value_to_first_index=Mock())
|
memory_manager = Mock(add_value_to_first_index=Mock())
|
||||||
|
input_manager = Mock(reset_input_state=Mock())
|
||||||
|
input_driver = Mock(refresh_grabs=Mock())
|
||||||
env = {
|
env = {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"OutputManager": output_manager,
|
"OutputManager": output_manager,
|
||||||
"SettingsManager": settings_manager,
|
"SettingsManager": settings_manager,
|
||||||
"MemoryManager": memory_manager,
|
"MemoryManager": memory_manager,
|
||||||
|
"InputManager": input_manager,
|
||||||
|
"InputDriver": input_driver,
|
||||||
},
|
},
|
||||||
"bindings": {"original": "COMMAND"},
|
"bindings": {"original": "COMMAND"},
|
||||||
"rawBindings": {"original": [1, ["KEY_FENRIR"]]},
|
"rawBindings": {"original": [1, ["KEY_FENRIR"]]},
|
||||||
@@ -105,6 +109,8 @@ def test_open_history_installs_modal_bindings_and_replay_is_not_recorded():
|
|||||||
assert env["bindings"][str([1, ["KEY_UP"]])] == "SPEECH_HISTORY_PREV"
|
assert env["bindings"][str([1, ["KEY_UP"]])] == "SPEECH_HISTORY_PREV"
|
||||||
assert env["bindings"][str([1, ["KEY_ENTER"]])] == "SPEECH_HISTORY_COPY"
|
assert env["bindings"][str([1, ["KEY_ENTER"]])] == "SPEECH_HISTORY_COPY"
|
||||||
assert env["bindings"][str([1, ["KEY_ESC"]])] == "SPEECH_HISTORY_CLOSE"
|
assert env["bindings"][str([1, ["KEY_ESC"]])] == "SPEECH_HISTORY_CLOSE"
|
||||||
|
input_driver = env["runtime"]["InputDriver"]
|
||||||
|
input_driver.refresh_grabs.assert_called_once_with(force=True)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.unit
|
@pytest.mark.unit
|
||||||
@@ -145,3 +151,22 @@ def test_copy_current_adds_clipboard_and_restores_bindings():
|
|||||||
assert not manager.is_active()
|
assert not manager.is_active()
|
||||||
assert env["bindings"] == {"original": "COMMAND"}
|
assert env["bindings"] == {"original": "COMMAND"}
|
||||||
assert env["rawBindings"] == {"original": [1, ["KEY_FENRIR"]]}
|
assert env["rawBindings"] == {"original": [1, ["KEY_FENRIR"]]}
|
||||||
|
env["runtime"]["InputManager"].reset_input_state.assert_called_once_with()
|
||||||
|
assert env["runtime"]["InputDriver"].refresh_grabs.call_count == 2
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.unit
|
||||||
|
def test_close_history_restores_keyboard_state_and_grabs():
|
||||||
|
manager, env, _spoken_messages, _memory_manager = (
|
||||||
|
build_speech_history_manager()
|
||||||
|
)
|
||||||
|
manager.add_text("first")
|
||||||
|
manager.open_history()
|
||||||
|
|
||||||
|
manager.close_history()
|
||||||
|
|
||||||
|
assert not manager.is_active()
|
||||||
|
assert env["bindings"] == {"original": "COMMAND"}
|
||||||
|
assert env["rawBindings"] == {"original": [1, ["KEY_FENRIR"]]}
|
||||||
|
env["runtime"]["InputManager"].reset_input_state.assert_called_once_with()
|
||||||
|
assert env["runtime"]["InputDriver"].refresh_grabs.call_count == 2
|
||||||
|
|||||||
Reference in New Issue
Block a user