@@ -8,13 +8,15 @@ import { createFastDomNode } from 'vs/base/browser/fastDomNode';
8
8
import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent' ;
9
9
import { Color } from 'vs/base/common/color' ;
10
10
import { 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' ;
12
12
import { autorunWithStore2 } from 'vs/base/common/observableImpl/autorun' ;
13
+ import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget' ;
13
14
import { DiffEditorEditors } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors' ;
14
15
import { DiffEditorViewModel } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorViewModel' ;
15
16
import { appendRemoveOnDispose } from 'vs/editor/browser/widget/diffEditorWidget2/utils' ;
16
17
import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions' ;
17
18
import { LineRange } from 'vs/editor/common/core/lineRange' ;
19
+ import { Position } from 'vs/editor/common/core/position' ;
18
20
import { OverviewRulerZone } from 'vs/editor/common/viewModel/overviewZoneManager' ;
19
21
import { defaultInsertColor , defaultRemoveColor , diffInserted , diffOverviewRulerInserted , diffOverviewRulerRemoved , diffRemoved } from 'vs/platform/theme/common/colorRegistry' ;
20
22
import { IThemeService } from 'vs/platform/theme/common/themeService' ;
@@ -90,18 +92,37 @@ export class OverviewRulerPart extends Disposable {
90
92
return ;
91
93
}
92
94
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
+
93
100
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
+
94
106
const colors = currentColors . read ( reader ) ;
95
107
const diff = m ?. diff . read ( reader ) ?. mappings ;
96
108
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
+ }
98
114
return ranges
99
115
. 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
+ } ) ;
101
122
}
102
123
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 ) ) ;
105
126
} ) ) ;
106
127
107
128
store . add ( autorun ( 'layout overview ruler' , ( reader ) => {
0 commit comments