do not throw for broken anchors since that can break editor

This commit is contained in:
nightwing 2014-11-20 23:23:46 +04:00
commit 004a19855a

View file

@ -70,7 +70,6 @@ var Anchor = exports.Anchor = function(doc, row, column) {
* @returns {Object}
**/
this.getPosition = function() {
//process.exit(2)
return this.$clipPositionToDocument(this.row, this.column);
};
@ -107,7 +106,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
if (delta.start.row > this.row)
return;
var point = this.$getTransformedPoint(delta, {row: this.row, column: this.column});
var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);
this.setPosition(point.row, point.column, true);
};
@ -116,14 +115,13 @@ var Anchor = exports.Anchor = function(doc, row, column) {
return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);
}
this.$getTransformedPoint = function (delta, point) {
function $getTransformedPoint(delta, point, moveIfEqual) {
// Get delta info.
var moveIfEqual = this.$insertRight;
var deltaIsInsert = (delta.action == "insert")
var deltaIsInsert = delta.action == "insert";
var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);
var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);
var deltaStart = delta.start;
var deltaEnd = (deltaIsInsert ? deltaStart : delta.end); // Collapse insert range.
var deltaStart = delta.start;
var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.
// DELTA AFTER POINT: No change needed.
if ($pointsInOrder(point, deltaStart, moveIfEqual)) {
@ -142,14 +140,13 @@ var Anchor = exports.Anchor = function(doc, row, column) {
}
// DELTA ENVELOPS POINT (delete only): Move point to delta start.
if (delta.action != "remove")
throw "Delete action expected.";
// TODO warn if delta.action != "remove" ?
return {
row: deltaStart.row,
column: deltaStart.column
};
};
}
/**
* Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.