Vmenu fixed I think. Hopefully last thing before new version.
This commit is contained in:
@@ -343,7 +343,7 @@ class driver(screenDriver):
|
||||
if not self.is_vmenu_active():
|
||||
return False
|
||||
key_name = self.vmenu_stdin_key_name(msg_bytes)
|
||||
if key_name:
|
||||
if key_name and not self.vmenu_key_already_handled(key_name):
|
||||
self.queue_keypress(key_name, event_queue)
|
||||
return True
|
||||
|
||||
@@ -375,6 +375,12 @@ class driver(screenDriver):
|
||||
return "KEY_" + char.upper()
|
||||
return None
|
||||
|
||||
def vmenu_key_already_handled(self, key_name):
|
||||
try:
|
||||
return key_name in self.env["input"]["curr_input"]
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def queue_keypress(self, key_name, event_queue):
|
||||
event_time = time.time()
|
||||
for event_state in [1, 0]:
|
||||
|
||||
@@ -226,6 +226,24 @@ def test_pty_vmenu_unknown_stdin_is_consumed_without_injection():
|
||||
event_queue.put.assert_not_called()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_pty_vmenu_stdin_does_not_duplicate_current_x11_key():
|
||||
pty_driver = PtyDriver()
|
||||
event_queue = Mock()
|
||||
pty_driver.env = {
|
||||
"input": {"curr_input": ["KEY_RIGHT"]},
|
||||
"runtime": {
|
||||
"VmenuManager": Mock(get_active=Mock(return_value=True)),
|
||||
},
|
||||
}
|
||||
pty_driver.inject_text_to_screen = Mock()
|
||||
|
||||
pty_driver.handle_stdin_input(b"\x1b[C", event_queue)
|
||||
|
||||
pty_driver.inject_text_to_screen.assert_not_called()
|
||||
event_queue.put.assert_not_called()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_pty_stdin_input_honors_interrupt_disabled():
|
||||
pty_driver = PtyDriver()
|
||||
|
||||
Reference in New Issue
Block a user