diff --git a/frontend/layout/lib/layoutModel.ts b/frontend/layout/lib/layoutModel.ts index 70ed3db6..4243e606 100644 --- a/frontend/layout/lib/layoutModel.ts +++ b/frontend/layout/lib/layoutModel.ts @@ -46,6 +46,7 @@ interface ResizeContext { } const DefaultGapSizePx = 5; +const MinNodeSizePx = 40; export class LayoutModel { /** @@ -666,6 +667,15 @@ export class LayoutModel { const clientDiff = (this.resizeContext.resizeHandleStartPx - clientPoint) * this.resizeContext.pixelToSizeRatio; const beforeNodeSize = this.resizeContext.beforeNodeStartSize - clientDiff; const afterNodeSize = this.resizeContext.afterNodeStartSize + clientDiff; + + // If either node will be too small after this resize, don't let it happen. + if ( + beforeNodeSize / this.resizeContext.pixelToSizeRatio < MinNodeSizePx || + afterNodeSize / this.resizeContext.pixelToSizeRatio < MinNodeSizePx + ) { + return; + } + const resizeAction: LayoutTreeResizeNodeAction = { type: LayoutTreeActionType.ResizeNode, resizeOperations: [