add fullLine type for markers

This commit is contained in:
nightwing 2012-10-01 17:08:52 +04:00
commit f7786930e9

View file

@ -81,21 +81,17 @@ var Marker = function(parentEl) {
var left = this.$padding + range.start.column * config.characterWidth;
marker.renderer(html, range, left, top, config);
}
if (marker.type == "fullLine") {
this.drawFullLineMarker(html, range, marker.clazz, config);
}
else if (range.isMultiLine()) {
if (marker.type == "text") {
if (marker.type == "text")
this.drawTextMarker(html, range, marker.clazz, config);
} else {
this.drawMultiLineMarker(
html, range, marker.clazz, config,
marker.type
);
}
else
this.drawMultiLineMarker(html, range, marker.clazz, config);
}
else {
this.drawSingleLineMarker(
html, range, marker.clazz + " ace_start", config,
null, marker.type
);
this.drawSingleLineMarker(html, range, marker.clazz + " ace_start", config);
}
}
this.element = dom.setInnerHtml(this.element, html.join(""));
@ -131,8 +127,8 @@ var Marker = function(parentEl) {
// Draws a multi line marker, where lines span the full width
this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, type) {
var padding = type === "background" ? 0 : this.$padding;
// from selection start to the end of the line
var padding = this.$padding;
var height = config.lineHeight;
var top = this.$getTop(range.start.row, config);
var left = padding + range.start.column * config.characterWidth;
@ -173,17 +169,12 @@ var Marker = function(parentEl) {
};
// Draws a marker which covers part or whole width of a single screen line
this.drawSingleLineMarker = function(stringBuilder, range, clazz, layerConfig, extraLength, type) {
var padding = type === "background" ? 0 : this.$padding;
var height = layerConfig.lineHeight;
this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength) {
var height = config.lineHeight;
var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;
if (type === "background")
var width = layerConfig.width;
else
width = (range.end.column + (extraLength || 0) - range.start.column) * layerConfig.characterWidth;
var top = this.$getTop(range.start.row, layerConfig);
var left = padding + range.start.column * layerConfig.characterWidth;
var top = this.$getTop(range.start.row, config);
var left = this.$padding + range.start.column * config.characterWidth;
stringBuilder.push(
"<div class='", clazz, "' style='",
@ -194,6 +185,20 @@ var Marker = function(parentEl) {
);
};
this.drawFullLineMarker = function(stringBuilder, range, clazz, config) {
var top = this.$getTop(range.start.row, config);
var height = config.lineHeight;
if (range.start.row != range.end.row)
height += this.$getTop(range.end.row, config) - top;
stringBuilder.push(
"<div class='", clazz, "' style='",
"height:", height, "px;",
"top:", top, "px;",
"left:0;right:0;'></div>"
);
}
}).call(Marker.prototype);
exports.Marker = Marker;