diff --git a/src/grid/sheet/GridOffsets.ts b/src/grid/sheet/GridOffsets.ts index beb640125..8e21b47b5 100644 --- a/src/grid/sheet/GridOffsets.ts +++ b/src/grid/sheet/GridOffsets.ts @@ -171,6 +171,7 @@ export class GridOffsets { } else { this.rows.set(change.row, { id: change.row, size: change.size }); } + this.gridOffsetsCache.reset('row', change.row < 0); } else if (change.column !== undefined) { const entry = this.columns.get(change.column); if (entry) { @@ -178,6 +179,7 @@ export class GridOffsets { } else { this.columns.set(change.column, { id: change.column, size: change.size }); } + this.gridOffsetsCache.reset('column', change.column < 0); } } diff --git a/src/grid/sheet/GridOffsetsCache.ts b/src/grid/sheet/GridOffsetsCache.ts index 2abcce8f2..95e66b76d 100644 --- a/src/grid/sheet/GridOffsetsCache.ts +++ b/src/grid/sheet/GridOffsetsCache.ts @@ -21,6 +21,22 @@ export class GridOffsetsCache { this.rowNegativeCache = [0]; } + reset(direction: 'column' | 'row', negative: boolean) { + if (direction === 'column') { + if (negative) { + this.columnNegativeCache = [0]; + } else { + this.columnCache = [0]; + } + } else { + if (negative) { + this.rowNegativeCache = [0]; + } else { + this.rowCache = [0]; + } + } + } + getColumnPlacement(column: number): { x: number; width: number } { let position = 0; if (column === 0) { diff --git a/src/gridGL/interaction/pointer/PointerHeading.ts b/src/gridGL/interaction/pointer/PointerHeading.ts index 7e19f3feb..78a26f77c 100644 --- a/src/gridGL/interaction/pointer/PointerHeading.ts +++ b/src/gridGL/interaction/pointer/PointerHeading.ts @@ -163,7 +163,7 @@ export class PointerHeading { // move viewport by the amount of the resize for negative columns const change = size - this.headingResizeViewport.originalSize; - this.app.viewport.x = this.headingResizeViewport.viewportStart + change; + this.app.viewport.x = this.headingResizeViewport.viewportStart + change * this.app.viewport.scale.x; this.headingResizeViewport.change = change; } @@ -184,7 +184,7 @@ export class PointerHeading { // move viewport by the amount of the resize for negative columns const change = size - this.headingResizeViewport.originalSize; - this.app.viewport.y = this.headingResizeViewport.viewportStart + change; + this.app.viewport.y = this.headingResizeViewport.viewportStart + change * this.app.viewport.scale.x; this.headingResizeViewport.change = change; }