fix delta events

This commit is contained in:
Fabian Jakobs 2011-01-14 18:27:38 +01:00
commit 87bfb14552

View file

@ -44,6 +44,8 @@ var Selection = require("ace/selection").Selection;
var TextMode = require("ace/mode/text").Mode;
var Range = require("ace/range").Range;
var NO_CHANGE_DELTAS = {};
var Document = function(text, mode) {
this.modified = true;
@ -511,17 +513,20 @@ var Document = function(text, mode) {
args.push.apply(args, lines);
this.$lines.splice.apply(this.$lines, args);
var nl = this.$getNewLineCharacter();
var delta = {
action: "insertText",
range: new Range(row, 0, row + lines.length, 0),
text: lines.join(nl) + nl
};
if (!fromUndo && this.$undoManager) {
var nl = this.$getNewLineCharacter();
this.$deltas.push(delta);
this.$informUndoManager.schedule();
}
this._dispatchEvent("changeDelta", { data: delta });
if (fromUndo !== NO_CHANGE_DELTAS) {
this._dispatchEvent("changeDelta", { data: delta });
}
},
this.$insert = function(position, text, fromUndo) {
@ -561,10 +566,10 @@ var Document = function(text, mode) {
var lastLine = newLines[newLines.length - 1] + line.substring(position.column);
this.$lines[position.row] = firstLine;
this.$insertLines(position.row + 1, [lastLine], true);
this.$insertLines(position.row + 1, [lastLine], NO_CHANGE_DELTAS);
if (newLines.length > 2) {
this.$insertLines(position.row + 1, newLines.slice(1, -1), true);
this.$insertLines(position.row + 1, newLines.slice(1, -1), NO_CHANGE_DELTAS);
}
var end = {