fix: proper terminal buffer save/restore with full pyte screen state
Save complete pyte screen state (characters, colors, attributes, cursor position, modes) via pickle serialization instead of just plain text. Restore via direct buffer manipulation + full redraw. Fixes broken/garbled layout when switching between servers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -86,12 +86,13 @@ class TerminalTab(ctk.CTkFrame):
|
||||
session.rows = rows
|
||||
session.connect()
|
||||
else:
|
||||
# Reused session — restore saved buffer instead of resetting
|
||||
# Reused session — restore full screen state from pool
|
||||
saved_buf = self.session_pool.get_shell_state(alias)
|
||||
def _restore_buffer():
|
||||
self._terminal.reset()
|
||||
if saved_buf:
|
||||
self._terminal.feed(saved_buf + b"\n")
|
||||
self._terminal.restore_buffer(saved_buf)
|
||||
else:
|
||||
self._terminal.reset()
|
||||
self.after(0, _restore_buffer)
|
||||
|
||||
# Set up callbacks even if session already existed
|
||||
|
||||
Reference in New Issue
Block a user