From 5d83c6dd2c938b996c7d7696bc0a297f48203b42 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Sat, 2 Dec 2023 13:55:39 +0100 Subject: [PATCH] rename `Grid.ScrollPos` to `Grid.Range` --- src/Actions.ts | 4 ++-- src/layout/Column.ts | 10 ++++----- src/layout/Desktop.ts | 38 +++++++++++++++----------------- src/layout/Grid.ts | 50 +++++++++++++++++++++---------------------- 4 files changed, 49 insertions(+), 53 deletions(-) diff --git a/src/Actions.ts b/src/Actions.ts index 718ba69..396dd41 100644 --- a/src/Actions.ts +++ b/src/Actions.ts @@ -221,7 +221,7 @@ namespace Actions { gridScrollLeftColumn: () => { world.do((clientManager, desktopManager) => { const grid = desktopManager.getCurrentDesktop().grid; - const column = grid.getLeftmostVisibleColumn(grid.desktop.getCurrentScrollPos(), true); + const column = grid.getLeftmostVisibleColumn(grid.desktop.getCurrentVisibleRange(), true); if (column === null) { return; } @@ -238,7 +238,7 @@ namespace Actions { gridScrollRightColumn: () => { world.do((clientManager, desktopManager) => { const grid = desktopManager.getCurrentDesktop().grid; - const column = grid.getRightmostVisibleColumn(grid.desktop.getCurrentScrollPos(), true); + const column = grid.getRightmostVisibleColumn(grid.desktop.getCurrentVisibleRange(), true); if (column === null) { return; } diff --git a/src/layout/Column.ts b/src/layout/Column.ts index c0dca74..852b690 100644 --- a/src/layout/Column.ts +++ b/src/layout/Column.ts @@ -237,13 +237,13 @@ class Column { return true; } - public isVisible(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) { + public isVisible(visibleRange: Desktop.Range, fullyVisible: boolean) { if (fullyVisible) { - return this.getLeft() >= scrollPos.getLeft() && - this.getRight() <= scrollPos.getRight(); + return this.getLeft() >= visibleRange.getLeft() && + this.getRight() <= visibleRange.getRight(); } else { - return this.getRight() + this.grid.config.gapsInnerHorizontal > scrollPos.getLeft() && - this.getLeft() - this.grid.config.gapsInnerHorizontal < scrollPos.getRight(); + return this.getRight() + this.grid.config.gapsInnerHorizontal > visibleRange.getLeft() && + this.getLeft() - this.grid.config.gapsInnerHorizontal < visibleRange.getRight(); } } diff --git a/src/layout/Desktop.ts b/src/layout/Desktop.ts index 2642c79..bca06ef 100644 --- a/src/layout/Desktop.ts +++ b/src/layout/Desktop.ts @@ -52,30 +52,30 @@ class Desktop { ) } - // calculates Desktop.Pos that scrolls the column into view - public getScrollPosForColumn(column: Column) { + // calculates Desktop.Range that scrolls the column into view + public getVisibleRangeForColumn(column: Column) { const left = column.getLeft(); const right = column.getRight(); - const initialScrollPos = this.getCurrentScrollPos(); + const initialVisibleRange = this.getCurrentVisibleRange(); let targetScrollX: number; - if (left < initialScrollPos.getLeft()) { + if (left < initialVisibleRange.getLeft()) { targetScrollX = left; - } else if (right > initialScrollPos.getRight()) { + } else if (right > initialVisibleRange.getRight()) { targetScrollX = right - this.tilingArea.width; } else { - return this.getScrollPos(this.clampScrollX(this.scrollX)); + return this.getVisibleRange(this.clampScrollX(this.scrollX)); } - const overscroll = this.getTargetOverscroll(targetScrollX, left < initialScrollPos.getLeft()); - return this.getScrollPos(this.clampScrollX(targetScrollX + overscroll)); + const overscroll = this.getTargetOverscroll(targetScrollX, left < initialVisibleRange.getLeft()); + return this.getVisibleRange(this.clampScrollX(targetScrollX + overscroll)); } private getTargetOverscroll(targetScrollX: number, scrollLeft: boolean) { if (this.config.overscroll === 0) { return 0; } - const visibleColumnsWidth = this.grid.getVisibleColumnsWidth(this.getScrollPos(targetScrollX), true); + const visibleColumnsWidth = this.grid.getVisibleColumnsWidth(this.getVisibleRange(targetScrollX), true); const remainingSpace = this.tilingArea.width - visibleColumnsWidth; const overscrollX = Math.min(this.config.overscroll, Math.round(remainingSpace / 2)); const direction = scrollLeft ? -1 : 1; @@ -83,7 +83,7 @@ class Desktop { } public scrollToColumn(column: Column) { - this.setScroll(this.getScrollPosForColumn(column).x, true); + this.setScroll(this.getVisibleRangeForColumn(column).x, true); } public scrollCenterColumn(column: Column) { @@ -106,12 +106,12 @@ class Desktop { this.scrollToColumn(focusedColumn); } - private getScrollPos(scrollX: number) { - return new Desktop.ScrollPos(scrollX, this.tilingArea.width); + private getVisibleRange(scrollX: number) { + return new Desktop.Range(scrollX, this.tilingArea.width); } - public getCurrentScrollPos() { - return this.getScrollPos(this.scrollX); + public getCurrentVisibleRange() { + return this.getVisibleRange(this.scrollX); } private clampScrollX(x: number) { @@ -133,10 +133,6 @@ class Desktop { } } - private applyScrollPos(scrollPos: Desktop.ScrollPos) { - this.setScroll(scrollPos.x, true); - } - public adjustScroll(dx: number, force: boolean) { this.setScroll(this.scrollX + dx, force); } @@ -146,8 +142,8 @@ class Desktop { } public equalizeVisibleColumnsWidths() { - const scrollPos = this.getCurrentScrollPos(); - const visibleColumns = Array.from(this.grid.getVisibleColumns(scrollPos, true)); + const visibleRange = this.getCurrentVisibleRange(); + const visibleColumns = Array.from(this.grid.getVisibleColumns(visibleRange, true)); let remainingWidth = this.tilingArea.width - (visibleColumns.length-1) * this.grid.config.gapsInnerHorizontal; let remainingColumns = visibleColumns.length; @@ -192,7 +188,7 @@ namespace Desktop { overscroll: number, }; - export class ScrollPos { + export class Range { public readonly x: number; public readonly width: number; diff --git a/src/layout/Grid.ts b/src/layout/Grid.ts index 25bbf1c..cf92b27 100644 --- a/src/layout/Grid.ts +++ b/src/layout/Grid.ts @@ -88,8 +88,8 @@ class Grid { this.width = x - this.config.gapsInnerHorizontal; } - public getLeftmostVisibleColumn(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) { - const scrollX = scrollPos.getLeft(); + public getLeftmostVisibleColumn(visibleRange: Desktop.Range, fullyVisible: boolean) { + const scrollX = visibleRange.getLeft(); for (const column of this.columns.iterator()) { const x = fullyVisible ? column.getLeft() : column.getRight() + (this.config.gapsInnerHorizontal - 1); if (x >= scrollX) { @@ -99,8 +99,8 @@ class Grid { return null; } - public getRightmostVisibleColumn(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) { - const scrollX = scrollPos.getRight(); + public getRightmostVisibleColumn(visibleRange: Desktop.Range, fullyVisible: boolean) { + const scrollX = visibleRange.getRight(); let last = null; for (const column of this.columns.iterator()) { const x = fullyVisible ? column.getRight() : column.getLeft() - (this.config.gapsInnerHorizontal - 1); @@ -113,18 +113,18 @@ class Grid { return last; } - public *getVisibleColumns(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) { + public *getVisibleColumns(visibleRange: Desktop.Range, fullyVisible: boolean) { for (const column of this.columns.iterator()) { - if (column.isVisible(scrollPos, fullyVisible)) { + if (column.isVisible(visibleRange, fullyVisible)) { yield column; } } } - public getVisibleColumnsWidth(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) { + public getVisibleColumnsWidth(visibleRange: Desktop.Range, fullyVisible: boolean) { let width = 0; let nVisible = 0; - for (const column of this.getVisibleColumns(scrollPos, fullyVisible)) { + for (const column of this.getVisibleColumns(visibleRange, fullyVisible)) { width += column.getWidth(); nVisible++; } @@ -136,16 +136,16 @@ class Grid { return width; } - private getLeftOffScreenColumn(scrollPos: Desktop.ScrollPos) { - const leftVisible = this.getLeftmostVisibleColumn(scrollPos, true); + private getLeftOffScreenColumn(visibleRange: Desktop.Range) { + const leftVisible = this.getLeftmostVisibleColumn(visibleRange, true); if (leftVisible === null) { return null; } return this.getPrevColumn(leftVisible); } - private getRightOffScreenColumn(scrollPos: Desktop.ScrollPos) { - const rightVisible = this.getRightmostVisibleColumn(scrollPos, true); + private getRightOffScreenColumn(visibleRange: Desktop.Range) { + const rightVisible = this.getRightmostVisibleColumn(visibleRange, true); if (rightVisible === null) { return null; } @@ -153,17 +153,17 @@ class Grid { } public increaseColumnWidth(column: Column) { - const scrollPos = this.desktop.getScrollPosForColumn(column); - if (this.width < scrollPos.width) { - column.adjustWidth(scrollPos.width - this.width, true); + const visibleRange = this.desktop.getVisibleRangeForColumn(column); + if (this.width < visibleRange.width) { + column.adjustWidth(visibleRange.width - this.width, true); return; } - let leftColumn = this.getLeftmostVisibleColumn(scrollPos, false); + let leftColumn = this.getLeftmostVisibleColumn(visibleRange, false); if (leftColumn === column) { leftColumn = null; } - let rightColumn = this.getRightmostVisibleColumn(scrollPos, false); + let rightColumn = this.getRightmostVisibleColumn(visibleRange, false); if (rightColumn === column) { rightColumn = null; } @@ -171,8 +171,8 @@ class Grid { return; } - const leftVisibleWidth = leftColumn === null ? Infinity : leftColumn.getRight() - scrollPos.getLeft(); - const rightVisibleWidth = rightColumn === null ? Infinity : scrollPos.getRight() - rightColumn.getLeft(); + const leftVisibleWidth = leftColumn === null ? Infinity : leftColumn.getRight() - visibleRange.getLeft(); + const rightVisibleWidth = rightColumn === null ? Infinity : visibleRange.getRight() - rightColumn.getLeft(); const expandLeft = leftVisibleWidth < rightVisibleWidth; const widthDelta = (expandLeft ? leftVisibleWidth : rightVisibleWidth) + this.config.gapsInnerHorizontal; if (expandLeft) { @@ -182,17 +182,17 @@ class Grid { } public decreaseColumnWidth(column: Column) { - const scrollPos = this.desktop.getScrollPosForColumn(column); - if (this.width <= scrollPos.width) { + const visibleRange = this.desktop.getVisibleRangeForColumn(column); + if (this.width <= visibleRange.width) { column.setWidth(Math.round(column.getWidth() / 2), true); return; } - let leftColumn = this.getLeftOffScreenColumn(scrollPos); + let leftColumn = this.getLeftOffScreenColumn(visibleRange); if (leftColumn === column) { leftColumn = null; } - let rightColumn = this.getRightOffScreenColumn(scrollPos); + let rightColumn = this.getRightOffScreenColumn(visibleRange); if (rightColumn === column) { rightColumn = null; } @@ -200,8 +200,8 @@ class Grid { return; } - const leftInvisibleWidth = leftColumn === null ? Infinity : scrollPos.getLeft() - leftColumn.getLeft(); - const rightInvisibleWidth = rightColumn === null ? Infinity : rightColumn.getRight() - scrollPos.getRight(); + const leftInvisibleWidth = leftColumn === null ? Infinity : visibleRange.getLeft() - leftColumn.getLeft(); + const rightInvisibleWidth = rightColumn === null ? Infinity : rightColumn.getRight() - visibleRange.getRight(); const shrinkLeft = leftInvisibleWidth < rightInvisibleWidth; const widthDelta = (shrinkLeft ? leftInvisibleWidth : rightInvisibleWidth); if (shrinkLeft) {