Reset insert state on AID

This commit is contained in:
Andrew Kay 2023-01-02 14:34:29 -06:00
parent e33f46e15a
commit 2c1dcedf9c
2 changed files with 21 additions and 0 deletions

View File

@ -110,6 +110,8 @@ class TN3270Session(Session):
try:
if aid is not None:
self._reset_insert()
self.emulator.aid(aid)
self.waiting_on_host = True
@ -162,6 +164,14 @@ class TN3270Session(Session):
self._apply()
self._flush()
def _reset_insert(self):
if not self.keyboard_insert:
return
self.keyboard_insert = False
self.terminal.display.status_line.write_keyboard_insert(False)
def _handle_insert_key(self):
self.keyboard_insert = not self.keyboard_insert

View File

@ -217,6 +217,17 @@ class SessionHandleKeyTestCase(unittest.TestCase):
self.session.emulator.input.assert_called_with(0x81, True)
def test_insert_reset_after_aid(self):
# Act
self.session.handle_key(Key.INSERT, KeyboardModifiers.NONE, None)
self.session.handle_key(Key.LOWER_A, KeyboardModifiers.NONE, None)
self.session.handle_key(Key.ENTER, KeyboardModifiers.NONE, None)
# Assert
self.assertFalse(self.session.keyboard_insert)
def test_operator_error(self):
# Arrange
self.session.emulator.input = Mock(side_effect=ProtectedCellOperatorError)