do not wrap change events in additional e.data

This commit is contained in:
nightwing 2014-10-18 00:56:13 +04:00
commit 525fe1ffe3
14 changed files with 45 additions and 55 deletions

View file

@ -70,6 +70,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
* @returns {Object}
**/
this.getPosition = function() {
//process.exit(2)
return this.$clipPositionToDocument(this.row, this.column);
};
@ -99,8 +100,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
* - `value`: An object describing the new Anchor position
*
**/
this.onChange = function(e) {
var delta = e.data;
this.onChange = function(delta) {
if (delta.start.row == delta.end.row && delta.start.row != this.row)
return;

View file

@ -579,7 +579,7 @@ var Document = function(textOrLines) {
// Apply.
applyDelta(this.$lines, delta, doNotValidate);
this._signal("change", {data: delta});
this._signal("change", delta);
};
this.$splitAndapplyLargeDelta = function(delta) {

View file

@ -46,7 +46,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insert({row: 0, column: 1}, "juhu");
assert.equal(doc.getValue(), ["1juhu2", "34"].join("\n"));
@ -63,7 +63,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insertMergedLines({row: 0, column: 1}, ['', '']);
assert.equal(doc.getValue(), ["1", "2", "34"].join("\n"));
@ -80,7 +80,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insertFullLines(0, ["aa", "bb"]);
assert.equal(doc.getValue(), ["aa", "bb", "12", "34"].join("\n"));
@ -97,7 +97,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insertFullLines(2, ["aa", "bb"]);
assert.equal(doc.getValue(), ["12", "34", "aa", "bb"].join("\n"));
@ -107,7 +107,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insertFullLines(1, ["aa", "bb"]);
assert.equal(doc.getValue(), ["12", "aa", "bb", "34"].join("\n"));
@ -124,7 +124,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insert({row: 0, column: 0}, "aa\nbb\ncc");
assert.equal(doc.getValue(), ["aa", "bb", "cc12", "34"].join("\n"));
@ -141,7 +141,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insert({row: 1, column: 2}, "aa\nbb\ncc");
assert.equal(doc.getValue(), ["12", "34aa", "bb", "cc"].join("\n"));
@ -158,7 +158,7 @@ module.exports = {
var doc = new Document(["12", "34"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.insert({row: 0, column: 1}, "aa\nbb\ncc");
assert.equal(doc.getValue(), ["1aa", "bb", "cc2", "34"].join("\n"));
@ -175,7 +175,7 @@ module.exports = {
var doc = new Document(["1234", "5678"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.remove(new Range(0, 1, 0, 3));
assert.equal(doc.getValue(), ["14", "5678"].join("\n"));
@ -192,7 +192,7 @@ module.exports = {
var doc = new Document(["1234", "5678"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.remove(new Range(0, 4, 1, 0));
assert.equal(doc.getValue(), ["12345678"].join("\n"));
@ -209,7 +209,7 @@ module.exports = {
var doc = new Document(["1234", "5678", "abcd"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.remove(new Range(0, 2, 2, 2));
assert.equal(doc.getValue(), ["12cd"].join("\n"));
@ -226,7 +226,7 @@ module.exports = {
var doc = new Document(["1234", "5678", "abcd"]);
var deltas = [];
doc.on("change", function(e) { deltas.push(e.data); });
doc.on("change", function(e) { deltas.push(e); });
doc.remove(new Range(1, 0, 3, 0));
assert.equal(doc.getValue(), ["1234", ""].join("\n"));

View file

@ -249,13 +249,12 @@ var EditSession = function(text, mode) {
this.$resetRowCache(fold.start.row);
};
this.onChange = function(e) {
var delta = e.data;
this.onChange = function(delta) {
this.$modified = true;
this.$resetRowCache(delta.start.row);
var removedFolds = this.$updateInternalDataOnChange(e);
var removedFolds = this.$updateInternalDataOnChange(delta);
if (!this.$fromUndo && this.$undoManager && !delta.ignore) {
this.$deltasDoc.push(delta);
if (removedFolds && removedFolds.length != 0) {
@ -269,7 +268,7 @@ var EditSession = function(text, mode) {
}
this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);
this._signal("change", e);
this._signal("change", delta);
};
/**
@ -1667,11 +1666,11 @@ var EditSession = function(text, mode) {
};
};
this.$updateInternalDataOnChange = function(e) {
this.$updateInternalDataOnChange = function(delta) {
var useWrapMode = this.$useWrapMode;
var action = e.data.action;
var start = e.data.start;
var end = e.data.end;
var action = delta.action;
var start = delta.start;
var end = delta.end;
var firstRow = start.row;
var lastRow = end.row;
var len = lastRow - firstRow;
@ -1683,7 +1682,7 @@ var EditSession = function(text, mode) {
this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len);
var foldLines = this.$foldData;
removedFolds = this.getFoldsInRange(e.data);
removedFolds = this.getFoldsInRange(delta);
this.removeFolds(removedFolds);
var foldLine = this.getFoldLine(end.row);
@ -1748,10 +1747,10 @@ var EditSession = function(text, mode) {
} else {
// Realign folds. E.g. if you add some new chars before a fold, the
// fold should "move" to the right.
len = Math.abs(e.data.start.column - e.data.end.column);
len = Math.abs(delta.start.column - delta.end.column);
if (action === "remove") {
// Get all the folds in the change range and remove them.
removedFolds = this.getFoldsInRange(e.data);
removedFolds = this.getFoldsInRange(delta);
this.removeFolds(removedFolds);
len = -len;

View file

@ -827,8 +827,7 @@ function Folding() {
}
};
this.updateFoldWidgets = function(e) {
var delta = e.data;
this.updateFoldWidgets = function(delta) {
var firstRow = delta.start.row;
var len = delta.end.row - firstRow;

View file

@ -674,14 +674,13 @@ var Editor = function(renderer, session) {
*
*
**/
this.onDocumentChange = function(e) {
this.onDocumentChange = function(delta) {
// Rerender and emit "change" event.
var delta = e.data;
var wrap = this.session.$useWrapMode;
var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);
this.renderer.updateLines(delta.start.row, lastRow, wrap);
this._signal("change", e);
this._signal("change", delta);
// Update cursor because tab characters can influence the cursor position.
this.$cursorChange();

View file

@ -578,8 +578,7 @@ var onSelectionChange = function(evt) {
* and deleting text.
* @param {!Event} evt The event.
*/
var onChange = function(evt) {
var data = evt.data;
var onChange = function(delta) {
switch (data.action) {
case 'remove':
cvox.Api.speak(data.text, 0, DELETED_PROP);

View file

@ -44,13 +44,12 @@ var ElasticTabstopsLite = function(editor) {
this.onExec = function() {
recordChanges = true;
};
this.onChange = function(e) {
var range = e.data;
this.onChange = function(delta) {
if (recordChanges) {
if (changedRows.indexOf(range.start.row) == -1)
changedRows.push(range.start.row);
if (range.end.row != range.start.row)
changedRows.push(range.end.row);
if (changedRows.indexOf(delta.start.row) == -1)
changedRows.push(delta.start.row);
if (delta.end.row != delta.start.row)
changedRows.push(delta.end.row);
}
};
};

View file

@ -100,10 +100,9 @@ var Gutter = function(parentEl) {
}
};
this.$updateAnnotations = function (e) {
this.$updateAnnotations = function (delta) {
if (!this.$annotations.length)
return;
var delta = e.data;
var firstRow = delta.start.row;
var len = delta.end.row - firstRow;
if (len === 0) {

View file

@ -113,11 +113,10 @@ function LineWidgets(session) {
});
};
this.updateOnChange = function(e) {
this.updateOnChange = function(delta) {
var lineWidgets = this.session.lineWidgets;
if (!lineWidgets) return;
var delta = e.data;
var startRow = delta.start.row;
var len = delta.end.row - startRow;

View file

@ -150,8 +150,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
* Emitted when the place holder updates.
*
**/
this.onUpdate = function(event) {
var delta = event.data;
this.onUpdate = function(delta) {
var range = delta;
if(range.start.row !== range.end.row) return;
if(range.start.row !== this.pos.row) return;

View file

@ -180,8 +180,7 @@ var RangeList = function() {
this.session = null;
};
this.$onChange = function(e) {
var delta = e.data;
this.$onChange = function(delta) {
if (delta.action == "insert"){
var start = delta.start;
var end = delta.end;

View file

@ -667,11 +667,11 @@ var TabstopManager = function(editor) {
this.editor = null;
};
this.onChange = function(e) {
var changeRange = e.data.range;
var isRemove = e.data.action[0] == "r";
var start = changeRange.start;
var end = changeRange.end;
this.onChange = function(delta) {
var changeRange = delta;
var isRemove = delta.action[0] == "r";
var start = delta.start;
var end = delta.end;
var startRow = start.row;
var endRow = end.row;
var lineDif = endRow - startRow;

View file

@ -162,12 +162,11 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) {
doc.on("change", this.changeListener);
};
this.changeListener = function(e) {
this.changeListener = function(delta) {
if (!this.deltaQueue) {
this.deltaQueue = [];
setTimeout(this.$sendDeltaQueue, 0);
}
var delta = e.data;
if (delta.action == "insert")
this.deltaQueue.push(delta.start, delta.lines);
else