Skip to content

Commit ccf1d56

Browse files
authored
allow viewZones to be shown before first visible line (when hidden ranges are in effect) (microsoft#185201)
fyi @alexdima
1 parent cbbfe11 commit ccf1d56

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

src/vs/editor/browser/viewParts/viewZones/viewZones.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export class ViewZones extends ViewPart {
181181
});
182182
}
183183

184-
const viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition, zone.afterColumnAffinity);
184+
const viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition, zone.afterColumnAffinity, true);
185185
const isVisible = zone.showInHiddenAreas || this._context.viewModel.coordinatesConverter.modelPositionIsVisible(zoneBeforeModelPosition);
186186
return {
187187
isInHiddenArea: !isVisible,

src/vs/editor/common/viewModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ export interface ICoordinatesConverter {
210210
validateViewRange(viewRange: Range, expectedModelRange: Range): Range;
211211

212212
// Model -> View conversion and related methods
213-
convertModelPositionToViewPosition(modelPosition: Position, affinity?: PositionAffinity): Position;
213+
convertModelPositionToViewPosition(modelPosition: Position, affinity?: PositionAffinity, allowZeroLineNumber?: boolean): Position;
214214
/**
215215
* @param affinity Only has an effect if the range is empty.
216216
*/

src/vs/editor/common/viewModel/viewModelLines.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,7 @@ export class ViewModelLinesFromProjectedModel implements IViewModelLines {
830830
return new Range(start.lineNumber, start.column, end.lineNumber, end.column);
831831
}
832832

833-
public convertModelPositionToViewPosition(_modelLineNumber: number, _modelColumn: number, affinity: PositionAffinity = PositionAffinity.None): Position {
833+
public convertModelPositionToViewPosition(_modelLineNumber: number, _modelColumn: number, affinity: PositionAffinity = PositionAffinity.None, allowZeroLineNumber: boolean = false): Position {
834834

835835
const validPosition = this.model.validatePosition(new Position(_modelLineNumber, _modelColumn));
836836
const inputLineNumber = validPosition.lineNumber;
@@ -844,7 +844,8 @@ export class ViewModelLinesFromProjectedModel implements IViewModelLines {
844844
if (lineIndex === 0 && !this.modelLineProjections[lineIndex].isVisible()) {
845845
// Could not reach a real line
846846
// console.log('in -> out ' + inputLineNumber + ',' + inputColumn + ' ===> ' + 1 + ',' + 1);
847-
return new Position(1, 1);
847+
// TODO@alexdima@hediet this isn't soo pretty
848+
return new Position(allowZeroLineNumber ? 0 : 1, 1);
848849
}
849850
const deltaLineNumber = 1 + this.projectedModelLineLineCounts.getPrefixSum(lineIndex);
850851

@@ -1070,8 +1071,8 @@ class CoordinatesConverter implements ICoordinatesConverter {
10701071

10711072
// Model -> View conversion and related methods
10721073

1073-
public convertModelPositionToViewPosition(modelPosition: Position, affinity?: PositionAffinity): Position {
1074-
return this._lines.convertModelPositionToViewPosition(modelPosition.lineNumber, modelPosition.column, affinity);
1074+
public convertModelPositionToViewPosition(modelPosition: Position, affinity?: PositionAffinity, allowZero?: boolean): Position {
1075+
return this._lines.convertModelPositionToViewPosition(modelPosition.lineNumber, modelPosition.column, affinity, allowZero);
10751076
}
10761077

10771078
public convertModelRangeToViewRange(modelRange: Range, affinity?: PositionAffinity): Range {

0 commit comments

Comments
 (0)