From 2e61f751d7bee454e14bf24cc8a99ea20658e697 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 1 Nov 2017 12:41:55 +0100 Subject: [PATCH] fixes #37358 --- .../electron-browser/dirtydiffDecorator.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts index 80e56b04c70..4cedf82453f 100644 --- a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts +++ b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts @@ -105,14 +105,6 @@ function getModifiedEndLineNumber(change: IChange): number { } } -function getModifiedMiddleLineNumber(change: IChange): number { - if (change.modifiedEndLineNumber === 0) { - return change.modifiedStartLineNumber; - } else { - return Math.round((change.modifiedEndLineNumber + change.modifiedStartLineNumber) / 2); - } -} - class UIEditorAction extends Action { private editor: ICommonCodeEditor; @@ -302,8 +294,20 @@ class DirtyDiffWidget extends PeekViewWidget { } private revealChange(change: IChange): void { - const position = new Position(getModifiedMiddleLineNumber(this.change), 1); - this.diffEditor.revealPositionInCenter(position, ScrollType.Immediate); + let start: number, end: number; + + if (change.modifiedEndLineNumber === 0) { // deletion + start = change.modifiedStartLineNumber; + end = change.modifiedStartLineNumber + 1; + } else if (change.originalEndLineNumber > 0) { // modification + start = change.modifiedStartLineNumber - 1; + end = change.modifiedEndLineNumber + 1; + } else { // insertion + start = change.modifiedStartLineNumber; + end = change.modifiedEndLineNumber; + } + + this.diffEditor.revealLinesInCenter(start, end, ScrollType.Immediate); } private _applyTheme(theme: ITheme) {