From fb40bd9592e500e63541d58a12a2c9add983c49f Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Sun, 24 Dec 2023 12:50:52 +0100 Subject: [PATCH] Grid.decreaseColumnWidth: prevent scrolling away from focused column when reaching minimum width --- src/layout/Grid.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/layout/Grid.ts b/src/layout/Grid.ts index 76871d9..e49db8b 100644 --- a/src/layout/Grid.ts +++ b/src/layout/Grid.ts @@ -224,12 +224,16 @@ class Grid { const deltaWidth = rightSpace - leftInvisibleWidth; column.adjustWidth(deltaWidth, true); console.assert(leftOffScreenColumn !== null); - this.desktop.scrollCenterRange(Desktop.RangeImpl.fromRanges(leftOffScreenColumn!, rightVisibleColumn)); + const newVisibleWidth = rightVisibleColumn.getRight() - leftOffScreenColumn!.getLeft(); + const leftVisibleColumn = newVisibleWidth <= visibleRange.getWidth() ? leftOffScreenColumn! : this.getNextColumn(leftOffScreenColumn!)!; + this.desktop.scrollCenterRange(Desktop.RangeImpl.fromRanges(leftVisibleColumn, rightVisibleColumn)); } else { const deltaWidth = leftSpace - rightInvisibleWidth; column.adjustWidth(deltaWidth, true); console.assert(rightOffScreenColumn !== null); - this.desktop.scrollCenterRange(Desktop.RangeImpl.fromRanges(leftVisibleColumn, rightOffScreenColumn!)); + const newVisibleWidth = rightOffScreenColumn!.getRight() - leftVisibleColumn.getLeft(); + const rightVisibleColumn = newVisibleWidth <= visibleRange.getWidth() ? rightOffScreenColumn! : this.getPrevColumn(rightOffScreenColumn!)!; + this.desktop.scrollCenterRange(Desktop.RangeImpl.fromRanges(leftVisibleColumn, rightVisibleColumn)); } }