do not throw for broken anchors since that can break editor
This commit is contained in:
parent
d619e4e746
commit
004a19855a
1 changed files with 7 additions and 10 deletions
|
|
@ -70,7 +70,6 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
**/
|
**/
|
||||||
this.getPosition = function() {
|
this.getPosition = function() {
|
||||||
//process.exit(2)
|
|
||||||
return this.$clipPositionToDocument(this.row, this.column);
|
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)
|
if (delta.start.row > this.row)
|
||||||
return;
|
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);
|
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);
|
return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$getTransformedPoint = function (delta, point) {
|
function $getTransformedPoint(delta, point, moveIfEqual) {
|
||||||
// Get delta info.
|
// 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 deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);
|
||||||
var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);
|
var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);
|
||||||
var deltaStart = delta.start;
|
var deltaStart = delta.start;
|
||||||
var deltaEnd = (deltaIsInsert ? deltaStart : delta.end); // Collapse insert range.
|
var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.
|
||||||
|
|
||||||
// DELTA AFTER POINT: No change needed.
|
// DELTA AFTER POINT: No change needed.
|
||||||
if ($pointsInOrder(point, deltaStart, moveIfEqual)) {
|
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.
|
// DELTA ENVELOPS POINT (delete only): Move point to delta start.
|
||||||
if (delta.action != "remove")
|
// TODO warn if delta.action != "remove" ?
|
||||||
throw "Delete action expected.";
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
row: deltaStart.row,
|
row: deltaStart.row,
|
||||||
column: deltaStart.column
|
column: deltaStart.column
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.
|
* Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue