diff --git a/packages/dom/src/dom.js b/packages/dom/src/dom.js index 75f2d103113455..4ea9ad8c0ef78f 100644 --- a/packages/dom/src/dom.js +++ b/packages/dom/src/dom.js @@ -169,7 +169,18 @@ export function isVerticalEdge( container, isReverse ) { } const selection = window.getSelection(); + + // Only consider the selection at the edge if the direction is towards the + // edge. + if ( + ! selection.isCollapsed && + isSelectionForward( selection ) === isReverse + ) { + return false; + } + const range = selection.rangeCount ? selection.getRangeAt( 0 ) : null; + if ( ! range ) { return false; } diff --git a/packages/e2e-tests/specs/__snapshots__/multi-block-selection.test.js.snap b/packages/e2e-tests/specs/__snapshots__/multi-block-selection.test.js.snap index 3634f485a83ee8..dad6ac487081bc 100644 --- a/packages/e2e-tests/specs/__snapshots__/multi-block-selection.test.js.snap +++ b/packages/e2e-tests/specs/__snapshots__/multi-block-selection.test.js.snap @@ -9,3 +9,9 @@ exports[`Multi-block selection should only trigger multi-selection when at the e
" `; + +exports[`Multi-block selection should use selection direction to determine vertical edge 1`] = ` +" +1
2.