From 275d2a02ca922738b58cea7dbf9dce229ea75f21 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 22 Feb 2019 10:05:54 +0100 Subject: [PATCH] fixes #64749 --- src/vs/base/browser/ui/list/listView.ts | 10 ++++++++++ src/vs/base/browser/ui/list/listWidget.ts | 8 ++++++++ src/vs/base/browser/ui/tree/abstractTree.ts | 12 ++++++++++++ src/vs/base/browser/ui/tree/asyncDataTree.ts | 8 ++++++++ 4 files changed, 38 insertions(+) diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 73ca98dabcf..513fddb0126 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -431,6 +431,16 @@ export class ListView implements ISpliceable, IDisposable { return scrollDimensions.height; } + get firstVisibleIndex(): number { + const range = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + return range.start; + } + + get lastVisibleIndex(): number { + const range = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight); + return range.end - 1; + } + element(index: number): T { return this.items[index].element; } diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 69ccfbbdb3c..1f36e8a2f10 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1308,6 +1308,14 @@ export class List implements ISpliceable, IDisposable { return this.view.renderHeight; } + get firstVisibleIndex(): number { + return this.view.firstVisibleIndex; + } + + get lastVisibleIndex(): number { + return this.view.lastVisibleIndex; + } + domFocus(): void { this.view.domNode.focus(); } diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index 08a218b4d54..5b3273a7b8f 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -1090,6 +1090,18 @@ export abstract class AbstractTree implements IDisposable return this.view.renderHeight; } + get firstVisibleElement(): T { + const index = this.view.firstVisibleIndex; + const node = this.view.element(index); + return node.element; + } + + get lastVisibleElement(): T { + const index = this.view.lastVisibleIndex; + const node = this.view.element(index); + return node.element; + } + domFocus(): void { this.view.domFocus(); } diff --git a/src/vs/base/browser/ui/tree/asyncDataTree.ts b/src/vs/base/browser/ui/tree/asyncDataTree.ts index da776a66b4e..12ed97d4497 100644 --- a/src/vs/base/browser/ui/tree/asyncDataTree.ts +++ b/src/vs/base/browser/ui/tree/asyncDataTree.ts @@ -372,6 +372,14 @@ export class AsyncDataTree implements IDisposable return this.tree.renderHeight; } + get firstVisibleElement(): T { + return this.tree.firstVisibleElement!.element as T; + } + + get lastVisibleElement(): T { + return this.tree.lastVisibleElement!.element as T; + } + domFocus(): void { this.tree.domFocus(); } -- GitLab