feat: 支持 3 列终端面板布局 - 修复多面板焦点冲突问题

This commit is contained in:
2026-03-20 01:48:54 +08:00
parent 51af175d92
commit b79abc9d8d
2 changed files with 7 additions and 6 deletions

View File

@@ -194,8 +194,9 @@ function TerminalPanel({ initialCwd, connectDelay = 0, autoFocus = false }: { in
function App() {
return (
<div className="grid grid-cols-2 grid-rows-1 gap-1 h-screen w-screen bg-[#1e1e1e]">
<div className="grid grid-cols-3 grid-rows-1 gap-1 h-screen w-screen bg-[#1e1e1e]">
<TerminalPanel initialCwd={DEFAULT_CWD} connectDelay={0} autoFocus={true} />
<TerminalPanel initialCwd={DEFAULT_CWD} connectDelay={100} />
<TerminalPanel initialCwd={DEFAULT_CWD} connectDelay={200} />
</div>
);

View File

@@ -945,13 +945,13 @@ const TerminalViewport = React.forwardRef<TerminalController, TerminalViewportPr
setTerminalCursorBlink(false);
};
const handleDocumentFocusIn = (event: FocusEvent) => {
const handleContainerFocusIn = (event: FocusEvent) => {
const target = event.target as Node | null;
if (target && container.contains(target)) {
setTerminalCursorBlink(true);
return;
} else {
setTerminalCursorBlink(false);
}
setTerminalCursorBlink(false);
};
const handleWindowBlur = () => {
@@ -1070,7 +1070,7 @@ const TerminalViewport = React.forwardRef<TerminalController, TerminalViewportPr
void initialize();
document.addEventListener('focusin', handleDocumentFocusIn, true);
container.addEventListener('focusin', handleContainerFocusIn, true);
window.addEventListener('blur', handleWindowBlur);
return () => {
@@ -1078,7 +1078,7 @@ const TerminalViewport = React.forwardRef<TerminalController, TerminalViewportPr
touchScrollCleanupRef.current?.();
touchScrollCleanupRef.current = null;
document.removeEventListener('focusin', handleDocumentFocusIn, true);
container.removeEventListener('focusin', handleContainerFocusIn, true);
window.removeEventListener('blur', handleWindowBlur);
localDisposables.forEach((disposable) => disposable.dispose());