@@ -8,13 +8,15 @@ import { createFastDomNode } from 'vs/base/browser/fastDomNode';
88import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent' ;
99import { Color } from 'vs/base/common/color' ;
1010import { Disposable } from 'vs/base/common/lifecycle' ;
11- import { IObservable , autorun , derived , observableFromEvent } from 'vs/base/common/observable' ;
11+ import { IObservable , autorun , derived , observableFromEvent , observableSignalFromEvent } from 'vs/base/common/observable' ;
1212import { autorunWithStore2 } from 'vs/base/common/observableImpl/autorun' ;
13+ import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget' ;
1314import { DiffEditorEditors } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors' ;
1415import { DiffEditorViewModel } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorViewModel' ;
1516import { appendRemoveOnDispose } from 'vs/editor/browser/widget/diffEditorWidget2/utils' ;
1617import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions' ;
1718import { LineRange } from 'vs/editor/common/core/lineRange' ;
19+ import { Position } from 'vs/editor/common/core/position' ;
1820import { OverviewRulerZone } from 'vs/editor/common/viewModel/overviewZoneManager' ;
1921import { defaultInsertColor , defaultRemoveColor , diffInserted , diffOverviewRulerInserted , diffOverviewRulerRemoved , diffRemoved } from 'vs/platform/theme/common/colorRegistry' ;
2022import { IThemeService } from 'vs/platform/theme/common/themeService' ;
@@ -90,18 +92,37 @@ export class OverviewRulerPart extends Disposable {
9092 return ;
9193 }
9294
95+ const origViewZonesChanged = observableSignalFromEvent ( 'viewZoneChanged' , this . _editors . original . onDidChangeViewZones ) ;
96+ const modViewZonesChanged = observableSignalFromEvent ( 'viewZoneChanged' , this . _editors . modified . onDidChangeViewZones ) ;
97+ const origHiddenRangesChanged = observableSignalFromEvent ( 'hiddenRangesChanged' , this . _editors . original . onDidChangeHiddenAreas ) ;
98+ const modHiddenRangesChanged = observableSignalFromEvent ( 'hiddenRangesChanged' , this . _editors . modified . onDidChangeHiddenAreas ) ;
99+
93100 store . add ( autorun ( 'set overview ruler zones' , ( reader ) => {
101+ origViewZonesChanged . read ( reader ) ;
102+ modViewZonesChanged . read ( reader ) ;
103+ origHiddenRangesChanged . read ( reader ) ;
104+ modHiddenRangesChanged . read ( reader ) ;
105+
94106 const colors = currentColors . read ( reader ) ;
95107 const diff = m ?. diff . read ( reader ) ?. mappings ;
96108
97- function createZones ( ranges : LineRange [ ] , color : Color ) {
109+ function createZones ( ranges : LineRange [ ] , color : Color , editor : CodeEditorWidget ) {
110+ const vm = editor . _getViewModel ( ) ;
111+ if ( ! vm ) {
112+ return [ ] ;
113+ }
98114 return ranges
99115 . filter ( d => d . length > 0 )
100- . map ( r => new OverviewRulerZone ( r . startLineNumber , r . endLineNumberExclusive , r . length , color . toString ( ) ) ) ;
116+ . map ( r => {
117+ const start = vm . coordinatesConverter . convertModelPositionToViewPosition ( new Position ( r . startLineNumber , 1 ) ) ;
118+ const end = vm . coordinatesConverter . convertModelPositionToViewPosition ( new Position ( r . endLineNumberExclusive , 1 ) ) ;
119+
120+ return new OverviewRulerZone ( start . lineNumber , end . lineNumber , 0 , color . toString ( ) ) ;
121+ } ) ;
101122 }
102123
103- originalOverviewRuler ?. setZones ( createZones ( ( diff || [ ] ) . map ( d => d . lineRangeMapping . originalRange ) , colors . removeColor ) ) ;
104- modifiedOverviewRuler ?. setZones ( createZones ( ( diff || [ ] ) . map ( d => d . lineRangeMapping . modifiedRange ) , colors . insertColor ) ) ;
124+ originalOverviewRuler ?. setZones ( createZones ( ( diff || [ ] ) . map ( d => d . lineRangeMapping . originalRange ) , colors . removeColor , this . _editors . original ) ) ;
125+ modifiedOverviewRuler ?. setZones ( createZones ( ( diff || [ ] ) . map ( d => d . lineRangeMapping . modifiedRange ) , colors . insertColor , this . _editors . modified ) ) ;
105126 } ) ) ;
106127
107128 store . add ( autorun ( 'layout overview ruler' , ( reader ) => {
0 commit comments