From 26ec624af6aed1c564222d864ced33b367de3bf9 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Wed, 16 May 2018 16:14:47 -0700 Subject: [PATCH] Fix position updating on file changes when comment widget has not been opened --- .../electron-browser/commentThreadWidget.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts index c729e996061..6f8db209aec 100644 --- a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts +++ b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts @@ -303,10 +303,22 @@ export class ReviewZoneWidget extends ZoneWidget { this._localToDispose.push(this.editor.onMouseDown(e => this.onEditorMouseDown(e))); this._localToDispose.push(this.editor.onMouseUp(e => this.onEditorMouseUp(e))); - this._localToDispose.push(this.editor.onDidChangeModelContent(() => { - if (this._commentGlyph.getPosition().position.lineNumber !== this.position.lineNumber) { + this._localToDispose.push(this.editor.onDidChangeModelContent((e) => { + // If the widget has been opened, the position is set and can be relied on for updating the glyph position + if (this.position && this.position.lineNumber !== this._commentGlyph.getPosition().position.lineNumber) { this._commentGlyph.setLineNumber(this.position.lineNumber); this.editor.layoutContentWidget(this._commentGlyph); + } else { + // Otherwise manually calculate position change :( + const positionChange = e.changes.map(change => { + if (change.range.startLineNumber < change.range.endLineNumber) { + return change.range.startLineNumber - change.range.endLineNumber; + } else { + return change.text.split(e.eol).length - 1; + } + }).reduce((prev, curr) => prev + curr, 0); + this._commentGlyph.setLineNumber(this._commentGlyph.getPosition().position.lineNumber + positionChange); + this.editor.layoutContentWidget(this._commentGlyph); } })); var headHeight = Math.ceil(this.editor.getConfiguration().lineHeight * 1.2); -- GitLab