diff --git a/src/vs/base/browser/ui/list/listPaging.ts b/src/vs/base/browser/ui/list/listPaging.ts index d883cc421bd30c1ff6fce2fb2c4f69fcda304d52..5955300a6eabf4486c49a5a2d70e0a189f15a53c 100644 --- a/src/vs/base/browser/ui/list/listPaging.ts +++ b/src/vs/base/browser/ui/list/listPaging.ts @@ -97,6 +97,10 @@ export class PagedList implements IDisposable { return this.list; } + get onDidDispose(): Event { + return this.list.onDidDispose; + } + get onFocusChange(): Event> { return mapEvent(this.list.onFocusChange, ({ elements, indexes }) => ({ elements: elements.map(e => this._model.get(e)), indexes })); } @@ -193,4 +197,4 @@ export class PagedList implements IDisposable { dispose(): void { this.list.dispose(); } -} \ No newline at end of file +} diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 4277662548dadfde82c7b89b61fc958a6a419bd3..b4232c778dd462dfa748ab50504428ba8fc97db4 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1059,7 +1059,7 @@ export class List implements ISpliceable, IDisposable { } isDOMFocused(): boolean { - return this.view && this.view.domNode === document.activeElement; + return this.view.domNode === document.activeElement; } getHTMLElement(): HTMLElement { diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index eea9ff87554e81aab8352270bf824a0eded7c592..f7c9173df5a2b5686378a052bbf591ccb55321fb 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -131,7 +131,7 @@ export class Tree implements _.ITree { } public isDOMFocused(): boolean { - return this.view && this.view.isFocused(); + return this.view.isFocused(); } public domBlur(): void { diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index d230f82981dc1482474f522d7a190873a745c41a..c3982e98716eedac70b4a638e27891d6615bb667 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -73,7 +73,13 @@ export class ListService implements IListService { const result = combinedDisposable([ widget.onDidFocus(() => this._lastFocusedWidget = widget), - toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)) + toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)), + widget.onDidDispose(() => { + this.lists = this.lists.filter(l => l !== registeredList); + if (this._lastFocusedWidget === widget) { + this._lastFocusedWidget = undefined; + } + }) ]); return result;