From 8e8fdcfcac1c8214418b6b182b520658948c1c34 Mon Sep 17 00:00:00 2001 From: catlog22 Date: Sun, 15 Feb 2026 00:08:46 +0800 Subject: [PATCH] feat: Update layout management in TerminalGrid to use updateLayoutSizes for size changes --- .../src/components/terminal-dashboard/TerminalGrid.tsx | 6 +++--- ccw/frontend/src/stores/terminalGridStore.ts | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ccw/frontend/src/components/terminal-dashboard/TerminalGrid.tsx b/ccw/frontend/src/components/terminal-dashboard/TerminalGrid.tsx index b0ce52d0..1af06324 100644 --- a/ccw/frontend/src/components/terminal-dashboard/TerminalGrid.tsx +++ b/ccw/frontend/src/components/terminal-dashboard/TerminalGrid.tsx @@ -80,13 +80,13 @@ function GridGroupRenderer({ group, minSize, onSizeChange }: GridGroupRendererPr export function TerminalGrid({ className }: { className?: string }) { const layout = useTerminalGridStore(selectTerminalGridLayout); const panes = useTerminalGridStore(selectTerminalGridPanes); - const setLayout = useTerminalGridStore((s) => s.setLayout); + const updateLayoutSizes = useTerminalGridStore((s) => s.updateLayoutSizes); const handleSizeChange = useCallback( (sizes: number[]) => { - setLayout({ ...layout, sizes }); + updateLayoutSizes(sizes); }, - [layout, setLayout] + [updateLayoutSizes] ); const content = useMemo(() => { diff --git a/ccw/frontend/src/stores/terminalGridStore.ts b/ccw/frontend/src/stores/terminalGridStore.ts index f9ed2e4c..d5343988 100644 --- a/ccw/frontend/src/stores/terminalGridStore.ts +++ b/ccw/frontend/src/stores/terminalGridStore.ts @@ -31,6 +31,7 @@ export interface TerminalGridState { export interface TerminalGridActions { setLayout: (layout: AllotmentLayoutGroup) => void; + updateLayoutSizes: (sizes: number[]) => void; splitPane: (paneId: PaneId, direction: 'horizontal' | 'vertical') => PaneId; closePane: (paneId: PaneId) => void; assignSession: (paneId: PaneId, sessionId: string | null) => void; @@ -82,6 +83,14 @@ export const useTerminalGridStore = create()( set({ layout }, false, 'terminalGrid/setLayout'); }, + updateLayoutSizes: (sizes) => { + const currentLayout = get().layout; + // Only update if sizes actually changed + if (JSON.stringify(currentLayout.sizes) !== JSON.stringify(sizes)) { + set({ layout: { ...currentLayout, sizes } }, false, 'terminalGrid/updateLayoutSizes'); + } + }, + splitPane: (paneId, direction) => { const state = get(); const newPaneId = generatePaneId(state.nextPaneIdCounter);