From 6fa2dbd8a758c83cbc673cea8d8db039986e4fab Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 9 Nov 2017 18:12:24 +0100 Subject: [PATCH] Do no react on decorations changed event when triggering it yourself fixes #37880 --- .../parts/debug/browser/debugEditorModelManager.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts b/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts index fddb130c4f1..a021434b22a 100644 --- a/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts +++ b/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts @@ -33,6 +33,7 @@ export class DebugEditorModelManager implements IWorkbenchContribution { private modelDataMap: Map; private toDispose: lifecycle.IDisposable[]; + private ignoreDecorationsChangedEvent: boolean; constructor( @IModelService private modelService: IModelService, @@ -187,7 +188,7 @@ export class DebugEditorModelManager implements IWorkbenchContribution { // breakpoints management. Represent data coming from the debug service and also send data back. private onModelDecorationsChanged(modelUrlStr: string): void { const modelData = this.modelDataMap.get(modelUrlStr); - if (modelData.breakpointDecorationsAsMap.size === 0) { + if (modelData.breakpointDecorationsAsMap.size === 0 || this.ignoreDecorationsChangedEvent) { // I have no decorations return; } @@ -262,7 +263,12 @@ export class DebugEditorModelManager implements IWorkbenchContribution { private updateBreakpoints(modelData: IDebugEditorModelData, newBreakpoints: IBreakpoint[]): void { const desiredDecorations = this.createBreakpointDecorations(modelData.model, newBreakpoints); - modelData.breakpointDecorationIds = modelData.model.deltaDecorations(modelData.breakpointDecorationIds, desiredDecorations); + try { + this.ignoreDecorationsChangedEvent = true; + modelData.breakpointDecorationIds = modelData.model.deltaDecorations(modelData.breakpointDecorationIds, desiredDecorations); + } finally { + this.ignoreDecorationsChangedEvent = false; + } modelData.breakpointModelIds = newBreakpoints.map(nbp => nbp.getId()); modelData.breakpointDecorationsAsMap.clear(); modelData.breakpointDecorationIds.forEach((decorationId, index) => modelData.breakpointDecorationsAsMap.set(decorationId, desiredDecorations[index].range));