Fix bug in updateWrapData. Rendering still sometimes misaligned

This commit is contained in:
Julian Viereck 2011-04-28 13:57:12 +02:00
commit 353c6a4f4a
4 changed files with 28 additions and 17 deletions

View file

@ -1005,30 +1005,38 @@ var EditSession = function(text, mode) {
var tokens;
var foldLine;
for (var row = firstRow; row <= lastRow; row++) {
var row = firstRow;
while (row <= lastRow) {
foldLine = this.getFoldLine(row);
if (!foldLine) {
tokens = this.$getDisplayTokens(lang.stringTrimRight(lines[row]));
} else {
tokens = [];
foldLine.walk(function(placeholder, row, column, lastColumn) {
var walkTokens;
if (placeholder) {
walkTokens = this.$getDisplayTokens(placeholder, tokens.length);
walkTokens[0] = PLACEHOLDER_START;
for (var i = 1; i < walkTokens.length; i++) {
walkTokens[i] = PLACEHOLDER_BODY;
foldLine.walk(
function(placeholder, row, column, lastColumn) {
var walkTokens;
if (placeholder) {
walkTokens = this.$getDisplayTokens(
placeholder, tokens.length);
walkTokens[0] = PLACEHOLDER_START;
for (var i = 1; i < walkTokens.length; i++) {
walkTokens[i] = PLACEHOLDER_BODY;
}
} else {
walkTokens = this.$getDisplayTokens(
lines[row].substring(lastColumn, column),
tokens.length);
}
} else {
walkTokens = this.$getDisplayTokens(
lines[row].substring(lastColumn, column),
tokens.length);
}
tokens = tokens.concat(walkTokens);
}.bind(this), row, lines[row].length);
tokens = tokens.concat(walkTokens);
}.bind(this),
foldLine.end.row,
lines[foldLine.end.row].length
);
}
wrapData[row] =
this.$computeWrapSplits(tokens, wrapLimit, tabSize);
row = this.getRowFoldEnd(row) + 1;
}
};

View file

@ -501,7 +501,7 @@ var VirtualRenderer = function(container, theme) {
};
// For debugging.
// console.log(JSON.stringify(layerConfig));
console.log(JSON.stringify(layerConfig));
this.$gutterLayer.element.style.marginTop = (-offset) + "px";
this.content.style.marginTop = (-offset) + "px";