diff --git a/oec/tn3270.py b/oec/tn3270.py index d079d05..2393f32 100644 --- a/oec/tn3270.py +++ b/oec/tn3270.py @@ -142,7 +142,9 @@ class TN3270Session(Session): self.telnet = None def _apply(self): - for (address, cell) in enumerate(self.emulator.cells): + for address in self.emulator.dirty: + cell = self.emulator.cells[address] + byte = 0x00 if isinstance(cell, AttributeCell): @@ -152,6 +154,8 @@ class TN3270Session(Session): self.terminal.display.buffered_write(byte, index=address) + self.emulator.dirty.clear() + # Update the message area. self.message_area = self._format_message_area() diff --git a/requirements.txt b/requirements.txt index 9e107e1..655f841 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ ptyprocess==0.6.0 pycoax==0.1.2 pyserial==3.4 pyte==0.8.0 -pytn3270==0.1.0 +pytn3270==0.2.0 sliplib==0.3.0 sortedcontainers==2.1.0 wcwidth==0.1.7 diff --git a/tests/test_tn3270.py b/tests/test_tn3270.py index dc6581f..cd8a25c 100644 --- a/tests/test_tn3270.py +++ b/tests/test_tn3270.py @@ -49,6 +49,8 @@ class SessionHandleHostTestCase(unittest.TestCase): _set_attribute(cells, 104, MockAttribute(protected=True)) self.session.emulator.cells = cells + self.session.emulator.dirty = set(range(105)) + self.session.emulator.cursor_address = 8 # Act and assert @@ -76,6 +78,7 @@ class SessionHandleHostTestCase(unittest.TestCase): self.session.emulator.update = Mock(return_value=True) self.session.emulator.cells = _create_screen_cells(24, 80) + self.session.emulator.dirty = set() # Act self.session.handle_host() @@ -92,6 +95,7 @@ class SessionHandleKeyTestCase(unittest.TestCase): self.session.emulator = Mock() self.session.emulator.cells = [] + self.session.emulator.dirty = set() def test_enter(self): # Act