Skip to content

Commit 45ae876

Browse files
authored
Fixes wrapping issue (microsoft#186221)
1 parent 8245737 commit 45ae876

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/vs/editor/browser/widget/diffEditorWidget2/lineAlignment.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55

66
import { $ } from 'vs/base/browser/dom';
77
import { ArrayQueue } from 'vs/base/common/arrays';
8+
import { RunOnceScheduler } from 'vs/base/common/async';
89
import { Codicon } from 'vs/base/common/codicons';
910
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
10-
import { IObservable, derived, observableFromEvent, observableSignalFromEvent, observableValue } from 'vs/base/common/observable';
11+
import { IObservable, derived, observableFromEvent, observableValue } from 'vs/base/common/observable';
1112
import { autorun, autorunWithStore2 } from 'vs/base/common/observableImpl/autorun';
1213
import { ThemeIcon } from 'vs/base/common/themables';
1314
import { assertIsDefined } from 'vs/base/common/types';
@@ -61,15 +62,16 @@ export class ViewZoneManager extends Disposable {
6162
super();
6263

6364
let isChangingViewZones = false;
65+
const state = observableValue('state', 0);
6466

65-
const originalViewZonesChanged = observableSignalFromEvent(
66-
'origViewZonesChanged',
67-
e => this._editors.original.onDidChangeViewZones((args) => { if (!isChangingViewZones && !this._canIgnoreViewZoneUpdateEvent()) { e(args); } })
68-
);
69-
const modifiedViewZonesChanged = observableSignalFromEvent(
70-
'modViewZonesChanged',
71-
e => this._editors.modified.onDidChangeViewZones((args) => { if (!isChangingViewZones && !this._canIgnoreViewZoneUpdateEvent()) { e(args); } })
72-
);
67+
const updateImmediately = this._register(new RunOnceScheduler(() => {
68+
state.set(state.get() + 1, undefined);
69+
}, 0));
70+
71+
this._register(this._editors.original.onDidChangeViewZones((args) => { if (!isChangingViewZones && !this._canIgnoreViewZoneUpdateEvent()) { updateImmediately.schedule(); } }));
72+
this._register(this._editors.modified.onDidChangeViewZones((args) => { if (!isChangingViewZones && !this._canIgnoreViewZoneUpdateEvent()) { updateImmediately.schedule(); } }));
73+
this._register(this._editors.original.onDidChangeConfiguration((args) => { if (args.hasChanged(EditorOption.wrappingInfo)) { updateImmediately.schedule(); } }));
74+
this._register(this._editors.modified.onDidChangeConfiguration((args) => { if (args.hasChanged(EditorOption.wrappingInfo)) { updateImmediately.schedule(); } }));
7375

7476
const originalModelTokenizationCompleted = this._diffModel.map(m =>
7577
m ? observableFromEvent(m.model.original.onDidChangeTokens, () => m.model.original.tokenization.backgroundTokenizationState === BackgroundTokenizationState.Completed) : undefined
@@ -82,16 +84,14 @@ export class ViewZoneManager extends Disposable {
8284
const diffModel = this._diffModel.read(reader);
8385
const diff = diffModel?.diff.read(reader);
8486
if (!diffModel || !diff) { return null; }
85-
originalViewZonesChanged.read(reader);
86-
modifiedViewZonesChanged.read(reader);
87+
state.read(reader);
8788
return computeRangeAlignment(this._editors.original, this._editors.modified, diff.mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod);
8889
});
8990

9091
const alignmentsSyncedMovedText = derived<ILineRangeAlignment[] | null>('alignments', (reader) => {
9192
const syncedMovedText = this._diffModel.read(reader)?.syncedMovedTexts.read(reader);
9293
if (!syncedMovedText) { return null; }
93-
originalViewZonesChanged.read(reader);
94-
modifiedViewZonesChanged.read(reader);
94+
state.read(reader);
9595
const mappings = syncedMovedText.changes.map(c => new DiffMapping(c));
9696
// TODO dont include alignments outside syncedMovedText
9797
return computeRangeAlignment(this._editors.original, this._editors.modified, mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod);

0 commit comments

Comments
 (0)