diff --git a/packages/dom/src/dom.js b/packages/dom/src/dom.js index e52fb4d7908b24..579e10af1e6d04 100644 --- a/packages/dom/src/dom.js +++ b/packages/dom/src/dom.js @@ -93,7 +93,8 @@ function isEdge( container, isReverse, onlyVertical ) { return false; } - const range = selection.getRangeAt( 0 ).cloneRange(); + const originalRange = selection.getRangeAt( 0 ); + const range = originalRange.cloneRange(); const isForward = isSelectionForward( selection ); const isCollapsed = selection.isCollapsed; @@ -131,9 +132,10 @@ function isEdge( container, isReverse, onlyVertical ) { // over its line boundary. const buffer = 3 * parseInt( lineHeight, 10 ) / 4; const containerRect = container.getBoundingClientRect(); + const originalRangeRect = getRectangleFromRange( originalRange ); const verticalEdge = isReverse ? - containerRect.top + padding > rangeRect.top - buffer : - containerRect.bottom - padding < rangeRect.bottom + buffer; + containerRect.top + padding > originalRangeRect.top - buffer : + containerRect.bottom - padding < originalRangeRect.bottom + buffer; if ( ! verticalEdge ) { return false; diff --git a/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap b/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap index c6c4bf5e8528e3..5fd746b9aaf4e7 100644 --- a/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap +++ b/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap @@ -24,6 +24,16 @@ exports[`Writing Flow Should navigate inner blocks with arrow keys 1`] = ` " `; +exports[`Writing Flow should allow selecting entire list with longer last item 1`] = ` +" +
a
+ + + +