fix ignoring empty delta
This commit is contained in:
parent
004a19855a
commit
eec012b24e
3 changed files with 15 additions and 5 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = "";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue