Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Range#_getTransformedByMergeOperation is incorrect #4377

Closed
scofalik opened this issue Jul 24, 2018 · 0 comments · Fixed by ckeditor/ckeditor5-engine#1497
Closed

Range#_getTransformedByMergeOperation is incorrect #4377

scofalik opened this issue Jul 24, 2018 · 0 comments · Fixed by ckeditor/ckeditor5-engine#1497
Assignees
Labels
package:engine type:improvement This issue reports a possible enhancement of an existing feature.
Milestone

Comments

@scofalik
Copy link
Contributor

This is a follow-up after OT refactor PR:
ckeditor/ckeditor5-engine#1459

Special case transformation in Range#_getTransformedByMergeOperation is incorrect.

It is like this:

if ( start.isAfter( end ) ) {
	// This happens in the following case:
	//
	// <p>abc</p>{<p>x}yz</p> -> <p>abcx}yz</p>{
	//                           <p>abcx{yz</p>}
	//
	return new Range( end, start );
}

Which is quite incorrect, as the new range does not include x as it should.

@scofalik scofalik changed the title [OT] Followup: Range#_getTransformedByMergeOperation is incorrect Range#_getTransformedByMergeOperation is incorrect Jul 24, 2018
@scofalik scofalik self-assigned this Jul 24, 2018
pjasiun referenced this issue in ckeditor/ckeditor5-engine Aug 9, 2018
Other: Moved error logging from debug tools to OT code.
Other: Aligned `Schema#getValidRanges` results to changes in `AttributeOperation`.
Other: Unified `RemoveOperation` and `ReinsertOperation` to have just one `MoveOperation`.
Other: Simplified `LiveRange#event:change` second parameter which is now an object containing `Position` not an `Operation`.
Internal: Operational transformations refactor followups. 
Internal: Additional improvements for the new OT algorithms.
Internal: Added relations to better solve cases in undo.
Internal: Improved cloning mechanism inside `WrapOperation`.
Internal: Improved `model.Range#getTransformedByMergeOperation`.
Internal: Other improvements in OT algorithms.
Internal: Improvements in docs.

Closes #1468. Closes #1464. Closes #1467. Closes #1460. Closes #1461. Closes #1462. Closes #1463. Closes #1475. Closes #1479.

BREAKING CHANGE: `LiveRange#event:change` second parameter is now an object containing property `deletionPosition`. It can be `model.Position` instance, if the range was moved to the graveyard root. The position is equal to the position from which nodes were removed. Otherwise, it is set to `null`.

BREAKING CHANGE: `Schema#getValidRanges` will return only flat ranges now. If an attribute is allowed on some nodes and in those nodes children, multiple "nested" ranges will be returned.

BREAKING CHANGE: `Schema#getValidRanges` is a generator now.
@mlewand mlewand transferred this issue from ckeditor/ckeditor5-engine Oct 9, 2019
@mlewand mlewand added this to the iteration 20 milestone Oct 9, 2019
@mlewand mlewand added module:model type:improvement This issue reports a possible enhancement of an existing feature. package:engine labels Oct 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package:engine type:improvement This issue reports a possible enhancement of an existing feature.
Projects
None yet
2 participants