From e7d1bdadddc9b0dfced1dc6a16d17db9e96f39dc Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Wed, 29 Apr 2026 14:29:29 -0400 Subject: [PATCH] fix: widen safeFit parameter from ManagedPaneInternal to ManagedPane The mobile-fit-override code calls safeFit with ManagedPane (from getPanes()), but safeFit was typed to require ManagedPaneInternal. Widen the parameter type since safeFit only needs fields on ManagedPane. Co-authored-by: Orca --- .../src/lib/pane-manager/pane-drag-reorder.ts | 4 ++-- src/renderer/src/lib/pane-manager/pane-manager.ts | 2 +- src/renderer/src/lib/pane-manager/pane-tree-ops.ts | 13 +++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/renderer/src/lib/pane-manager/pane-drag-reorder.ts b/src/renderer/src/lib/pane-manager/pane-drag-reorder.ts index dc6103eb717..295da95e9b2 100644 --- a/src/renderer/src/lib/pane-manager/pane-drag-reorder.ts +++ b/src/renderer/src/lib/pane-manager/pane-drag-reorder.ts @@ -1,4 +1,4 @@ -import type { DropZone, ManagedPaneInternal } from './pane-manager-types' +import type { DropZone, ManagedPane, ManagedPaneInternal } from './pane-manager-types' import type { PaneStyleOptions } from './pane-manager-types' import { detachPaneFromTree, insertPaneNextTo } from './pane-tree-ops' @@ -17,7 +17,7 @@ export type DragReorderCallbacks = { getRoot: () => HTMLElement getStyleOptions: () => PaneStyleOptions isDestroyed: () => boolean - safeFit: (pane: ManagedPaneInternal) => void + safeFit: (pane: ManagedPane) => void applyPaneOpacity: () => void applyDividerStyles: () => void refitPanesUnder: (el: HTMLElement) => void diff --git a/src/renderer/src/lib/pane-manager/pane-manager.ts b/src/renderer/src/lib/pane-manager/pane-manager.ts index bf70c770f1e..3334553ba71 100644 --- a/src/renderer/src/lib/pane-manager/pane-manager.ts +++ b/src/renderer/src/lib/pane-manager/pane-manager.ts @@ -379,7 +379,7 @@ export class PaneManager { getRoot: () => this.root, getStyleOptions: () => this.styleOptions, isDestroyed: () => this.destroyed, - safeFit: (pane: ManagedPaneInternal) => safeFit(pane), + safeFit, applyPaneOpacity: () => applyPaneOpacity(this.panes.values(), this.activePaneId, this.styleOptions), applyDividerStyles: () => this.applyDividerStylesWrapped(), diff --git a/src/renderer/src/lib/pane-manager/pane-tree-ops.ts b/src/renderer/src/lib/pane-manager/pane-tree-ops.ts index a84ba3041a2..7e7d05bb6c1 100644 --- a/src/renderer/src/lib/pane-manager/pane-tree-ops.ts +++ b/src/renderer/src/lib/pane-manager/pane-tree-ops.ts @@ -1,4 +1,9 @@ -import type { DropZone, ManagedPaneInternal, PaneStyleOptions } from './pane-manager-types' +import type { + DropZone, + ManagedPane, + ManagedPaneInternal, + PaneStyleOptions +} from './pane-manager-types' import { createDivider } from './pane-divider' import { getFitOverrideForPane } from './mobile-fit-overrides' @@ -11,12 +16,12 @@ export { findLineByContent, captureScrollState, restoreScrollState } from './pan type TreeOpsCallbacks = { getRoot: () => HTMLElement getStyleOptions: () => PaneStyleOptions - safeFit: (pane: ManagedPaneInternal) => void + safeFit: (pane: ManagedPane) => void refitPanesUnder: (el: HTMLElement) => void onLayoutChanged?: () => void } -function getProposedDimensions(pane: ManagedPaneInternal): { cols: number; rows: number } | null { +function getProposedDimensions(pane: ManagedPane): { cols: number; rows: number } | null { try { return pane.fitAddon.proposeDimensions() ?? null } catch { @@ -34,7 +39,7 @@ function getProposedDimensions(pane: ManagedPaneInternal): { cols: number; rows: // scrollTop to 0 asynchronously. splitPane captures the pre-split state and // scheduleSplitScrollRestore owns the authoritative restore on a timer, so // safeFit here just fits and lets the scheduled restore do its job. -export function safeFit(pane: ManagedPaneInternal): void { +export function safeFit(pane: ManagedPane): void { try { // Why: when a mobile client has resized this PTY to phone dimensions, // the desktop must keep xterm at those dimensions instead of fitting to