Change:
Multi diff editor issue while expanding the hidden lines VS Code Version: 1.86 insider OS Version: Windows 11 //cc Steps to Reproduce: the multi diff editor on the hidden lines at the bottom ( the blue line) now it will expand the 10 lines now scrolling top doesn't show me the '5 hidden lines' text until I scroll down and then scroll up again

Discussion:
export class TemplateData implements IObjectData { constructor( public readonly viewModel: DocumentDiffItemViewModel, <ins> public readonly deltaScrollVertical: (delta: number) => void, </ins> ) { }

this._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block'; })); <del> this.editor.getModifiedEditor().onDidLayoutChange(e => { </del> <ins> this._register(this.editor.getModifiedEditor().onDidLayoutChange(e => { </ins> const width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth; this._modifiedWidth.set(width, undefined); <del> }); </del> <ins> })); </ins> <del> this.editor.getOriginalEditor().onDidLayoutChange(e => { </del> <ins> this._register(this.editor.getOriginalEditor().onDidLayoutChange(e => { </ins> const width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth; this._originalWidth.set(width, undefined); <del> }); </del> <ins> })); </ins> this._register(this.editor.onDidContentSizeChange(e => { globalTransaction(tx => {

}); })); <ins> this._register(this.editor.getOriginalEditor().onDidScrollChange(e => { if (this._isSettingScrollTop) { return; } if (!e.scrollTopChanged || !this._data) { return; } const delta = e.scrollTop - this._lastScrollTop; this._data.deltaScrollVertical(delta); })); </ins> this._register(autorun(reader => { const isFocused = this.isFocused.read(reader); this._elements.root.classList.toggle('focused', isFocused);

private readonly _dataStore = new DisposableStore(); <ins> private _data: TemplateData | undefined; </ins> public setData(data: TemplateData): void { <ins> this._data = data; </ins> function updateOptions(options: IDiffEditorOptions): IDiffEditorOptions { return { ...options,

private readonly _headerHeight = /*this._elements.header.clientHeight*/ 48; <ins> private _lastScrollTop = -1; private _isSettingScrollTop = false; </ins> public render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void { this._elements.root.style.visibility = 'visible'; this._elements.root.style.top = `${verticalRange.start}px`;

height: verticalRange.length - this._outerEditorHeight, }); }); <del> this.editor.getOriginalEditor().setScrollTop(editorScroll); </del> <ins> try { this._isSettingScrollTop = true; this._lastScrollTop = editorScroll; this.editor.getOriginalEditor().setScrollTop(editorScroll); } finally { this._isSettingScrollTop = false; } </ins> this._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0); this._elements.header.classList.toggle('collapsed', delta === maxDelta);

} const items = vm.items.read(reader); return items.map(d => { <del> const item = store.add(new VirtualizedViewItem(d, this._objectPool, this.scrollLeft)); </del> <ins> const item = store.add(new VirtualizedViewItem(d, this._objectPool, this.scrollLeft, delta => { this._scrollableElement.setScrollPosition({ scrollTop: this._scrollableElement.getScrollPosition().scrollTop + delta }); })); </ins> const data = this._lastDocStates?.[item.getKey()]; if (data) { transaction(tx => {

public readonly viewModel: DocumentDiffItemViewModel, private readonly _objectPool: ObjectPool<TemplateData, DiffEditorItemTemplate>, private readonly _scrollLeft: IObservable<number>, <ins> private readonly _deltaScrollVertical: (delta: number) => void, </ins> ) { super();

let ref = this._templateRef.get(); if (!ref) { <del> ref = this._objectPool.getUnusedObj(new TemplateData(this.viewModel)); </del> <ins> ref = this._objectPool.getUnusedObj(new TemplateData(this.viewModel, this._deltaScrollVertical)); </ins> this._templateRef.set(ref, undefined); const selections = this.viewModel.lastTemplateData.get().selections;