8
0
Просмотр исходного кода

Fixed: `model.LivePosition` was incorrectly transformed in some cases.

Szymon Cofalik 8 лет назад
Родитель
Сommit
397ccc482e
1 измененных файлов с 7 добавлено и 1 удалено
  1. 7 1
      packages/ckeditor5-engine/src/model/liveposition.js

+ 7 - 1
packages/ckeditor5-engine/src/model/liveposition.js

@@ -186,7 +186,13 @@ function transform( type, range, position ) {
 				transformed = this._getCombined( position, range.start );
 				transformed = this._getCombined( position, range.start );
 			} else {
 			} else {
 				const insertBefore = this.stickiness == 'sticksToNext';
 				const insertBefore = this.stickiness == 'sticksToNext';
-				transformed = this._getTransformedByMove( position, range.start, howMany, insertBefore );
+
+				// `Position._getTransformedByMove` is expecting `targetPosition` to be "before" move
+				// (before transformation). `range.start` is already after the move happened.
+				// We have to revert `targetPosition` to the state before the move.
+				const targetPosition = range.start._getTransformedByInsertion( position, howMany );
+
+				transformed = this._getTransformedByMove( position, targetPosition, howMany, insertBefore );
 			}
 			}
 			break;
 			break;
 	}
 	}