From 2322c2a70c13089bb83e9ee76704e3cdb78a8116 Mon Sep 17 00:00:00 2001 From: andxu Date: Tue, 6 Nov 2018 09:54:15 +0800 Subject: [PATCH] Fix issue 83: Dependency view sync with opened files should only work when the side bar is visible. --- src/views/dependencyExplorer.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/views/dependencyExplorer.ts b/src/views/dependencyExplorer.ts index 1399d321..a3e87599 100644 --- a/src/views/dependencyExplorer.ts +++ b/src/views/dependencyExplorer.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -import { ExtensionContext, ProviderResult, TextEditor, TreeView, Uri, window } from "vscode"; +import { ExtensionContext, ProviderResult, TextEditor, TreeView, TreeViewVisibilityChangeEvent, Uri, window } from "vscode"; import { Jdtls } from "../java/jdtls"; import { INodeData } from "../java/nodeData"; import { Settings } from "../settings"; @@ -16,6 +16,8 @@ export class DependencyExplorer { private _dataProvider: DependencyDataProvider; + private _selectionWhenHidden: DataNode; + constructor(public readonly context: ExtensionContext) { this._dataProvider = new DependencyDataProvider(context); this._dependencyViewer = window.createTreeView("javaDependencyExplorer", { treeDataProvider: this._dataProvider }); @@ -25,6 +27,13 @@ export class DependencyExplorer { this.reveal(textEditor.document.uri); } }); + + this._dependencyViewer.onDidChangeVisibility((e: TreeViewVisibilityChangeEvent) => { + if (e.visible && this._selectionWhenHidden) { + this._dependencyViewer.reveal(this._selectionWhenHidden); + this._selectionWhenHidden = undefined; + } + }); } public dispose(): void { @@ -56,7 +65,11 @@ export class DependencyExplorer { for (const c of children) { if (c.path === paths[0].path) { if (paths.length === 1) { - this._dependencyViewer.reveal(c); + if (this._dependencyViewer.visible) { + this._dependencyViewer.reveal(c); + } else { + this._selectionWhenHidden = c; + } } else { paths.shift(); this.revealPath(c, paths);