Fixes #2792: Render a line highlight decoration when having a current find match

This commit is contained in:
Alex Dima
2016-07-05 13:53:37 +02:00
parent 9f5a818226
commit ca6ad01542

View File

@@ -14,6 +14,7 @@ export class FindDecorations implements IDisposable {
private _editor:editorCommon.ICommonCodeEditor;
private _decorations:string[];
private _findScopeDecorationId:string;
private _lineHighlightDecorationId:string;
private _highlightedDecorationId:string;
private _startPosition:Position;
@@ -21,6 +22,7 @@ export class FindDecorations implements IDisposable {
this._editor = editor;
this._decorations = [];
this._findScopeDecorationId = null;
this._lineHighlightDecorationId = null;
this._highlightedDecorationId = null;
this._startPosition = this._editor.getPosition();
}
@@ -31,6 +33,7 @@ export class FindDecorations implements IDisposable {
this._editor = null;
this._decorations = [];
this._findScopeDecorationId = null;
this._lineHighlightDecorationId = null;
this._highlightedDecorationId = null;
this._startPosition = null;
}
@@ -38,6 +41,7 @@ export class FindDecorations implements IDisposable {
public reset(): void {
this._decorations = [];
this._findScopeDecorationId = null;
this._lineHighlightDecorationId = null;
this._highlightedDecorationId = null;
}
@@ -95,6 +99,14 @@ export class FindDecorations implements IDisposable {
this._highlightedDecorationId = newCurrentDecorationId;
changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations.createFindMatchDecorationOptions(true));
}
if (this._lineHighlightDecorationId !== null) {
changeAccessor.removeDecoration(this._lineHighlightDecorationId);
this._lineHighlightDecorationId = null;
}
if (newCurrentDecorationId !== null) {
let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);
this._lineHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations.createLineHighlightDecoration());
}
});
}
@@ -122,6 +134,7 @@ export class FindDecorations implements IDisposable {
this._findScopeDecorationId = null;
}
this._decorations = tmpDecorations;
this._lineHighlightDecorationId = null;
this._highlightedDecorationId = null;
}
@@ -131,6 +144,9 @@ export class FindDecorations implements IDisposable {
if (this._findScopeDecorationId) {
result.push(this._findScopeDecorationId);
}
if (this._lineHighlightDecorationId) {
result.push(this._lineHighlightDecorationId);
}
return result;
}
@@ -146,6 +162,14 @@ export class FindDecorations implements IDisposable {
};
}
private static createLineHighlightDecoration(): editorCommon.IModelDecorationOptions {
return {
stickiness: editorCommon.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: 'lineHighlight',
isWholeLine: true
};
}
private static createFindScopeDecorationOptions(): editorCommon.IModelDecorationOptions {
return {
className: 'findScope',