diff --git a/extensions/notebook/src/book/bookModel.ts b/extensions/notebook/src/book/bookModel.ts index fe4c648b66..5220cac58c 100644 --- a/extensions/notebook/src/book/bookModel.ts +++ b/extensions/notebook/src/book/bookModel.ts @@ -51,7 +51,7 @@ export class BookModel implements azdata.nb.NavigationProvider { } public getNotebook(uri: string): BookTreeItem | undefined { - return this._allNotebooks.get(uri); + return this._allNotebooks.get(this.openAsUntitled ? path.basename(uri) : uri); } public async loadTableOfContentFiles(folderPath: string): Promise { @@ -190,8 +190,8 @@ export class BookModel implements azdata.nb.NavigationProvider { if (this.openAsUntitled) { if (!this._allNotebooks.get(path.basename(pathToNotebook))) { this._allNotebooks.set(path.basename(pathToNotebook), notebook); - notebooks.push(notebook); } + notebooks.push(notebook); } else { // convert to URI to avoid casing issue with drive letters when getting navigation links let uriToNotebook: vscode.Uri = vscode.Uri.file(pathToNotebook); diff --git a/extensions/notebook/src/book/bookTreeView.ts b/extensions/notebook/src/book/bookTreeView.ts index c3de56cffd..083ddbf01d 100644 --- a/extensions/notebook/src/book/bookTreeView.ts +++ b/extensions/notebook/src/book/bookTreeView.ts @@ -183,9 +183,6 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider { - this.revealActiveDocumentInViewlet(e.document.uri, false); - }); } async showPreviewFile(urlToOpen?: string): Promise { @@ -235,10 +232,12 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider openDocument.document.uri.fsPath.replace(/\\/g, '/').toLowerCase().indexOf(b.bookPath.toLowerCase()) > -1); + bookItem = book?.getNotebook(openDocument.document.uri.fsPath); } } else if (uri.fsPath) { - bookItem = this.currentBook?.getNotebook(uri.fsPath); + let book = this.books.find(b => uri.fsPath.replace(/\\/g, '/').toLowerCase().indexOf(b.bookPath.toLowerCase()) > -1); + bookItem = book?.getNotebook(uri.fsPath); } if (bookItem) { // Select + focus item in viewlet if books viewlet is already open, or if we pass in variable diff --git a/extensions/notebook/src/extension.ts b/extensions/notebook/src/extension.ts index fd7511a3ac..5f16ab543d 100644 --- a/extensions/notebook/src/extension.ts +++ b/extensions/notebook/src/extension.ts @@ -129,6 +129,14 @@ export async function activate(extensionContext: vscode.ExtensionContext): Promi const providedBookTreeViewProvider = new BookTreeViewProvider(appContext.apiWrapper, [], extensionContext, true, PROVIDED_BOOKS_VIEWID); await providedBookTreeViewProvider.initialized; + azdata.nb.onDidChangeActiveNotebookEditor(e => { + if (e.document.uri.scheme === 'untitled') { + providedBookTreeViewProvider.revealActiveDocumentInViewlet(e.document.uri, false); + } else { + bookTreeViewProvider.revealActiveDocumentInViewlet(e.document.uri, false); + } + + }); extensionContext.subscriptions.push(vscode.window.registerTreeDataProvider(BOOKS_VIEWID, bookTreeViewProvider)); extensionContext.subscriptions.push(vscode.window.registerTreeDataProvider(PROVIDED_BOOKS_VIEWID, providedBookTreeViewProvider));