From c9c1d152ca8e30aed30f840191f29ee954fda014 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Fri, 4 Jul 2025 17:37:06 +0100 Subject: [PATCH] improve restore of scrollback --- ShhShell/Views/Terminal/SSHTerminalDelegate.swift | 14 ++++++++++---- ShhShell/Views/Terminal/TerminalController.swift | 3 --- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ShhShell/Views/Terminal/SSHTerminalDelegate.swift b/ShhShell/Views/Terminal/SSHTerminalDelegate.swift index aca17a6..23db00f 100644 --- a/ShhShell/Views/Terminal/SSHTerminalDelegate.swift +++ b/ShhShell/Views/Terminal/SSHTerminalDelegate.swift @@ -23,10 +23,6 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina print(getTerminal().foregroundColor.colorCodable) applySelectedTheme() - - Task { - await startFeedLoop() - } } func restoreScrollback() async { @@ -74,6 +70,16 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina // TODO: selectedtext and cursor colors } + override func didMoveToWindow() { + super.didMoveToWindow() + if window != nil { + Task { + await restoreScrollback() + await startFeedLoop() + } + } + } + public override init(frame: CGRect) { super.init(frame: frame) terminalDelegate = self diff --git a/ShhShell/Views/Terminal/TerminalController.swift b/ShhShell/Views/Terminal/TerminalController.swift index e181f36..f65f5ad 100644 --- a/ShhShell/Views/Terminal/TerminalController.swift +++ b/ShhShell/Views/Terminal/TerminalController.swift @@ -19,9 +19,6 @@ struct TerminalController: UIViewRepresentable { func makeUIView(context: Context) -> TerminalView { if let sessionID = handler.sessionID { if let existing = container.sessions[sessionID] { - Task { - await existing.terminalView.restoreScrollback() - } return existing.terminalView } }