diff --git a/addons/addon-fit/src/FitAddon.ts b/addons/addon-fit/src/FitAddon.ts index 2087e6146a..030fca4b41 100644 --- a/addons/addon-fit/src/FitAddon.ts +++ b/addons/addon-fit/src/FitAddon.ts @@ -31,8 +31,8 @@ export class FitAddon implements ITerminalAddon , IFitApi { public dispose(): void {} - public fit(): void { - const dims = this.proposeDimensions(); + public fit(rect: object | undefined): void { + const dims = this.proposeDimensions(rect); if (!dims || !this._terminal || isNaN(dims.cols) || isNaN(dims.rows)) { return; } @@ -47,7 +47,7 @@ export class FitAddon implements ITerminalAddon , IFitApi { } } - public proposeDimensions(): ITerminalDimensions | undefined { + public proposeDimensions(rect: object | undefined): ITerminalDimensions | undefined { if (!this._terminal) { return undefined; } @@ -68,8 +68,8 @@ export class FitAddon implements ITerminalAddon , IFitApi { 0 : core.viewport.scrollBarWidth; const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement); - const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height')); - const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width'))); + const parentElementHeight = (rect && rect.height) ? rect.height : parseInt(parentElementStyle.getPropertyValue('height')); + const parentElementWidth = (rect && rect.width) ? rect.width : Math.max(0, parseInt(parentElementStyle.getPropertyValue('width'))); const elementStyle = window.getComputedStyle(this._terminal.element); const elementPadding = { top: parseInt(elementStyle.getPropertyValue('padding-top')), diff --git a/addons/addon-fit/typings/addon-fit.d.ts b/addons/addon-fit/typings/addon-fit.d.ts index e3d20e29f5..e5cfb34116 100644 --- a/addons/addon-fit/typings/addon-fit.d.ts +++ b/addons/addon-fit/typings/addon-fit.d.ts @@ -30,12 +30,12 @@ declare module '@xterm/addon-fit' { /** * Resizes the terminal to the dimensions of its containing element. */ - public fit(): void; + public fit(rect: object): void; /** * Gets the proposed dimensions that will be used for a fit. */ - public proposeDimensions(): ITerminalDimensions | undefined; + public proposeDimensions(rect: object): ITerminalDimensions | undefined; } /**