rename Grid.ScrollPos to Grid.Range
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user