fix ignoring empty delta

This commit is contained in:
nightwing 2014-11-20 23:28:09 +04:00
commit eec012b24e
3 changed files with 15 additions and 5 deletions

View file

@ -570,7 +570,7 @@ var Document = function(textOrLines) {
this.applyDelta = function(delta, doNotValidate) {
var isInsert = delta.action == "insert";
// An empty range is a NOOP.
if (isInsert ? !delta.lines.length
if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]
: !Range.comparePoints(delta.start, delta.end))
return;

View file

@ -298,6 +298,16 @@ module.exports = {
assert.equal(doc.$lines.length, 1);
},
"test: ignore empty delta": function() {
var doc = new Document("");
doc.on("change", function() {
throw "should ignore empty delta";
})
doc.insert({row: 0, column: 0}, "");
doc.insert({row: 1, column: 1}, "");
doc.remove({start: {row: 1, column: 1}, end: {row: 1, column: 1}});
},
"test: inserting huge delta": function() {
var doc = new Document("");
var val = "";

View file

@ -18,11 +18,11 @@ var Mirror = exports.Mirror = function(sender) {
doc.applyDeltas(data);
} else {
for (var i = 0; i < data.length; i += 2) {
if (Array.isArray(data[i+1]))
if (Array.isArray(data[i+1])) {
var d = {action: "insert", start: data[i], lines: data[i+1]};
else
var d = {action: "remove", start: data[i],end: data[i+1]};
} else {
var d = {action: "remove", start: data[i], end: data[i+1]};
}
doc.applyDelta(d, true);
}
}