Skip to content

Commit 40be3ec

Browse files
committed
Merge branch 't/11393'
2 parents d138ae0 + 97aa61c commit 40be3ec

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

core/selection.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -399,12 +399,16 @@
399399
}
400400
}
401401

402-
// Fix ranges which ends after hidden selection container.
403-
function fixRangesAfterHiddenSelectionContainer( ranges, root, hiddenSelectionContainerIndex ) {
402+
// Fix ranges which may end after hidden selection container.
403+
// Note: this function may only be used if hidden selection container
404+
// is not in DOM any more.
405+
function fixRangesAfterHiddenSelectionContainer( ranges, root ) {
404406
for ( var i = 0; i < ranges.length; ++i ) {
405407
range = ranges[ i ];
406-
if ( range.endContainer.equals( root ) )
407-
range.endOffset = Math.min( range.endOffset, hiddenSelectionContainerIndex );
408+
if ( range.endContainer.equals( root ) ) {
409+
// We can use getChildCount() because hidden selection container is not in DOM.
410+
range.endOffset = Math.min( range.endOffset, root.getChildCount() );
411+
}
408412
}
409413
}
410414

@@ -1725,16 +1729,16 @@
17251729
*/
17261730
selectRanges: function( ranges ) {
17271731
var editor = this.root.editor,
1728-
hiddenSelectionContainer;
1732+
hadHiddenSelectionContainer = editor && editor._.hiddenSelectionContainer;
1733+
1734+
this.reset();
17291735

17301736
// Check if there's a hiddenSelectionContainer in editable at some index.
17311737
// Some ranges may be anchored after the hiddenSelectionContainer and,
17321738
// once the container is removed while resetting the selection, they
1733-
// may need new endOffset (one element less within the range) (#11021).
1734-
if ( editor && ( hiddenSelectionContainer = editor._.hiddenSelectionContainer ) )
1735-
fixRangesAfterHiddenSelectionContainer( ranges, this.root, hiddenSelectionContainer.getIndex() );
1736-
1737-
this.reset();
1739+
// may need new endOffset (one element less within the range) (#11021 #11393).
1740+
if ( hadHiddenSelectionContainer )
1741+
fixRangesAfterHiddenSelectionContainer( ranges, this.root );
17381742

17391743
if ( !ranges.length )
17401744
return;

0 commit comments

Comments
 (0)