fix: sync pty size after terminal appearance changes (#95)

This commit is contained in:
Jinjing
2026-03-24 19:52:56 -07:00
committed by GitHub
parent c7eeef4e8c
commit f5dc4de2a8
2 changed files with 11 additions and 11 deletions
@@ -6,12 +6,15 @@ import {
resolvePaneStyleOptions,
resolveEffectiveTerminalAppearance
} from '@/lib/terminal-theme'
import { buildFontFamily } from './layout-serialization'
import type { PtyTransport } from './pty-transport'
export function applyTerminalAppearance(
manager: PaneManager,
settings: GlobalSettings,
systemPrefersDark: boolean,
paneFontSizes: Map<number, number>
paneFontSizes: Map<number, number>,
paneTransports: Map<number, PtyTransport>
): void {
const appearance = resolveEffectiveTerminalAppearance(settings, systemPrefersDark)
const paneStyles = resolvePaneStyleOptions(settings)
@@ -26,11 +29,16 @@ export function applyTerminalAppearance(
pane.terminal.options.cursorBlink = settings.terminalCursorBlink
const paneSize = paneFontSizes.get(pane.id)
pane.terminal.options.fontSize = paneSize ?? settings.terminalFontSize
pane.terminal.options.fontFamily = buildFontFamily(settings.terminalFontFamily)
try {
pane.fitAddon.fit()
} catch {
/* ignore */
}
const transport = paneTransports.get(pane.id)
if (transport?.isConnected()) {
transport.resize(pane.terminal.cols, pane.terminal.rows)
}
}
manager.setPaneStyleOptions({
@@ -82,7 +82,8 @@ export function useTerminalPaneLifecycle({
manager,
currentSettings,
systemPrefersDarkRef.current,
paneFontSizesRef.current
paneFontSizesRef.current,
paneTransportsRef.current
)
}
@@ -275,15 +276,6 @@ export function useTerminalPaneLifecycle({
return
}
applyAppearance(manager)
const fontFamily = buildFontFamily(settings.terminalFontFamily)
for (const pane of manager.getPanes()) {
pane.terminal.options.fontFamily = fontFamily
try {
pane.fitAddon.fit()
} catch {
/* ignore */
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [settings, systemPrefersDark])
}