Merge pull request #1421 from ajaxorg/better-marker
add extraStyle parameter to marker layer
This commit is contained in:
commit
43e4184fa8
2 changed files with 16 additions and 17 deletions
|
|
@ -101,7 +101,7 @@ var Marker = function(parentEl) {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Draws a marker, which spans a range of text on multiple lines
|
// Draws a marker, which spans a range of text on multiple lines
|
||||||
this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig) {
|
this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {
|
||||||
// selection start
|
// selection start
|
||||||
var row = range.start.row;
|
var row = range.start.row;
|
||||||
|
|
||||||
|
|
@ -109,35 +109,36 @@ var Marker = function(parentEl) {
|
||||||
row, range.start.column,
|
row, range.start.column,
|
||||||
row, this.session.getScreenLastRowColumn(row)
|
row, this.session.getScreenLastRowColumn(row)
|
||||||
);
|
);
|
||||||
this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " ace_start", layerConfig, 1, "text");
|
this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " ace_start", layerConfig, 1, extraStyle);
|
||||||
|
|
||||||
// selection end
|
// selection end
|
||||||
row = range.end.row;
|
row = range.end.row;
|
||||||
lineRange = new Range(row, 0, row, range.end.column);
|
lineRange = new Range(row, 0, row, range.end.column);
|
||||||
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 0, "text");
|
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 0, extraStyle);
|
||||||
|
|
||||||
for (row = range.start.row + 1; row < range.end.row; row++) {
|
for (row = range.start.row + 1; row < range.end.row; row++) {
|
||||||
lineRange.start.row = row;
|
lineRange.start.row = row;
|
||||||
lineRange.end.row = row;
|
lineRange.end.row = row;
|
||||||
lineRange.end.column = this.session.getScreenLastRowColumn(row);
|
lineRange.end.column = this.session.getScreenLastRowColumn(row);
|
||||||
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, "text");
|
this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, extraStyle);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Draws a multi line marker, where lines span the full width
|
// Draws a multi line marker, where lines span the full width
|
||||||
this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, type) {
|
this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {
|
||||||
// from selection start to the end of the line
|
// from selection start to the end of the line
|
||||||
var padding = this.$padding;
|
var padding = this.$padding;
|
||||||
var height = config.lineHeight;
|
var height = config.lineHeight;
|
||||||
var top = this.$getTop(range.start.row, config);
|
var top = this.$getTop(range.start.row, config);
|
||||||
var left = padding + range.start.column * config.characterWidth;
|
var left = padding + range.start.column * config.characterWidth;
|
||||||
|
extraStyle = extraStyle || "";
|
||||||
|
|
||||||
stringBuilder.push(
|
stringBuilder.push(
|
||||||
"<div class='", clazz, " ace_start' style='",
|
"<div class='", clazz, " ace_start' style='",
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"right:0;",
|
"right:0;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:", left, "px;'></div>"
|
"left:", left, "px;", extraStyle, "'></div>"
|
||||||
);
|
);
|
||||||
|
|
||||||
// from start of the last line to the selection end
|
// from start of the last line to the selection end
|
||||||
|
|
@ -149,7 +150,7 @@ var Marker = function(parentEl) {
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"width:", width, "px;",
|
"width:", width, "px;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:", padding, "px;'></div>"
|
"left:", padding, "px;", extraStyle, "'></div>"
|
||||||
);
|
);
|
||||||
|
|
||||||
// all the complete lines
|
// all the complete lines
|
||||||
|
|
@ -163,12 +164,12 @@ var Marker = function(parentEl) {
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"right:0;",
|
"right:0;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:", padding, "px;'></div>"
|
"left:", padding, "px;", extraStyle, "'></div>"
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Draws a marker which covers part or whole width of a single screen line
|
// Draws a marker which covers part or whole width of a single screen line
|
||||||
this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength) {
|
this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {
|
||||||
var height = config.lineHeight;
|
var height = config.lineHeight;
|
||||||
var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;
|
var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;
|
||||||
|
|
||||||
|
|
@ -180,11 +181,11 @@ var Marker = function(parentEl) {
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"width:", width, "px;",
|
"width:", width, "px;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:", left,"px;'></div>"
|
"left:", left, "px;", extraStyle || "", "'></div>"
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.drawFullLineMarker = function(stringBuilder, range, clazz, config) {
|
this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {
|
||||||
var top = this.$getTop(range.start.row, config);
|
var top = this.$getTop(range.start.row, config);
|
||||||
var height = config.lineHeight;
|
var height = config.lineHeight;
|
||||||
if (range.start.row != range.end.row)
|
if (range.start.row != range.end.row)
|
||||||
|
|
@ -194,11 +195,11 @@ var Marker = function(parentEl) {
|
||||||
"<div class='", clazz, "' style='",
|
"<div class='", clazz, "' style='",
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:0;right:0;'></div>"
|
"left:0;right:0;", extraStyle || "", "'></div>"
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.drawScreenLineMarker = function(stringBuilder, range, clazz, config) {
|
this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {
|
||||||
var top = this.$getTop(range.start.row, config);
|
var top = this.$getTop(range.start.row, config);
|
||||||
var height = config.lineHeight;
|
var height = config.lineHeight;
|
||||||
|
|
||||||
|
|
@ -206,7 +207,7 @@ var Marker = function(parentEl) {
|
||||||
"<div class='", clazz, "' style='",
|
"<div class='", clazz, "' style='",
|
||||||
"height:", height, "px;",
|
"height:", height, "px;",
|
||||||
"top:", top, "px;",
|
"top:", top, "px;",
|
||||||
"left:0;right:0;'></div>"
|
"left:0;right:0;", extraStyle || "", "'></div>"
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,9 +71,7 @@ var SearchHighlight = function(regExp, clazz, type) {
|
||||||
|
|
||||||
for (var j = ranges.length; j --; ) {
|
for (var j = ranges.length; j --; ) {
|
||||||
markerLayer.drawSingleLineMarker(
|
markerLayer.drawSingleLineMarker(
|
||||||
html, ranges[j].toScreenRange(session), this.clazz, config,
|
html, ranges[j].toScreenRange(session), this.clazz, config);
|
||||||
null, this.type
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue