diff --git a/src/vs/editor/browser/view/viewImpl.ts b/src/vs/editor/browser/view/viewImpl.ts index d58c3f0fede626e259e38f324aebee0d186f1bae..72397cdf9e834aa17566805533611dd2fbcfcbd5 100644 --- a/src/vs/editor/browser/view/viewImpl.ts +++ b/src/vs/editor/browser/view/viewImpl.ts @@ -450,10 +450,9 @@ export class View extends ViewEventHandler { return new OverviewRuler(this._context, cssClassName); } - public change(callback: (changeAccessor: IViewZoneChangeAccessor) => any): boolean { - const hadAChange = this.viewZones.changeViewZones(callback); + public change(callback: (changeAccessor: IViewZoneChangeAccessor) => any): void { + this.viewZones.changeViewZones(callback); this._scheduleRender(); - return hadAChange; } public render(now: boolean, everything: boolean): void { diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 0f3aaa1bddf874a8cbba1c90a734c61e119c1b4c..9cb79e71a6c4a8fd1c96f4282662b26b47618b1d 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -1385,10 +1385,7 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE if (!this._modelData || !this._modelData.hasRealView) { return; } - const hasChanges = this._modelData.view.change(callback); - if (hasChanges) { - this._onDidChangeViewZones.fire(); - } + this._modelData.view.change(callback); } public getTargetAtClientPoint(clientX: number, clientY: number): editorBrowser.IMouseTarget | null { @@ -1521,6 +1518,9 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE case OutgoingViewModelEventKind.ScrollChanged: this._onDidScrollChange.fire(e); break; + case OutgoingViewModelEventKind.ViewZonesChanged: + this._onDidChangeViewZones.fire(); + break; } })); diff --git a/src/vs/editor/common/viewModel/viewModelEventDispatcher.ts b/src/vs/editor/common/viewModel/viewModelEventDispatcher.ts index 2bd933331e784acb9b695ba13922a4bdec25961f..8b8f5b4b90700f559843a09e96fc22899703f8ee 100644 --- a/src/vs/editor/common/viewModel/viewModelEventDispatcher.ts +++ b/src/vs/editor/common/viewModel/viewModelEventDispatcher.ts @@ -148,6 +148,7 @@ export const enum OutgoingViewModelEventKind { ContentSizeChanged, FocusChanged, ScrollChanged, + ViewZonesChanged, } export class ContentSizeChangedEvent implements IContentSizeChangedEvent { @@ -251,7 +252,6 @@ export class ScrollChangedEvent { return (!this.scrollWidthChanged && !this.scrollLeftChanged && !this.scrollHeightChanged && !this.scrollTopChanged); } - public merge(other: OutgoingViewModelEvent): ScrollChangedEvent { if (other.kind !== OutgoingViewModelEventKind.ScrollChanged) { return this; @@ -263,8 +263,25 @@ export class ScrollChangedEvent { } } +export class ViewZonesChangedEvent { + + public readonly kind = OutgoingViewModelEventKind.ViewZonesChanged; + + constructor() { + } + + public isNoOp(): boolean { + return false; + } + + public merge(other: OutgoingViewModelEvent): ViewZonesChangedEvent { + return this; + } +} + export type OutgoingViewModelEvent = ( ContentSizeChangedEvent | FocusChangedEvent | ScrollChangedEvent + | ViewZonesChangedEvent ); diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index 99de87ae6ab993aed33d58d88f42a992c5be42dd..63663464456bc8cf74fed2b660dbf5067a638bd3 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -30,7 +30,7 @@ import { Cursor } from 'vs/editor/common/controller/cursor'; import { PartialCursorState, CursorState, IColumnSelectData, EditOperationType, CursorConfiguration } from 'vs/editor/common/controller/cursorCommon'; import { CursorChangeReason } from 'vs/editor/common/controller/cursorEvents'; import { IWhitespaceChangeAccessor } from 'vs/editor/common/viewLayout/linesLayout'; -import { ViewModelEventDispatcher, OutgoingViewModelEvent, FocusChangedEvent, ScrollChangedEvent } from 'vs/editor/common/viewModel/viewModelEventDispatcher'; +import { ViewModelEventDispatcher, OutgoingViewModelEvent, FocusChangedEvent, ScrollChangedEvent, ViewZonesChangedEvent } from 'vs/editor/common/viewModel/viewModelEventDispatcher'; import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler'; const USE_IDENTITY_LINES_COLLECTION = true; @@ -980,6 +980,7 @@ export class ViewModel extends Disposable implements IViewModel { const hadAChange = this.viewLayout.changeWhitespace(callback); if (hadAChange) { this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewZonesChangedEvent()); + this._eventDispatcher.emitOutgoingEvent(new ViewZonesChangedEvent()); } } public setMaxLineWidth(maxLineWidth: number): void {