From a521609093ece51a6396ae3a1a0ffd753dfa4283 Mon Sep 17 00:00:00 2001 From: Ella van Durpe Date: Fri, 17 Jan 2020 14:30:28 +0100 Subject: [PATCH 1/2] Writing Flow: fix list selection --- packages/dom/src/dom.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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; From ede5343df2dfafec871c0e8ff5a71936273f6b9d Mon Sep 17 00:00:00 2001 From: Ella van Durpe Date: Fri, 17 Jan 2020 16:09:41 +0100 Subject: [PATCH 2/2] Add e2e test --- .../__snapshots__/writing-flow.test.js.snap | 10 ++++++++++ .../specs/editor/various/writing-flow.test.js | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) 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

+ + + + +" +`; + exports[`Writing Flow should create valid paragraph blocks when rapidly pressing Enter 1`] = ` "

diff --git a/packages/e2e-tests/specs/editor/various/writing-flow.test.js b/packages/e2e-tests/specs/editor/various/writing-flow.test.js index 661267778b6cad..db15f1f29d6ad0 100644 --- a/packages/e2e-tests/specs/editor/various/writing-flow.test.js +++ b/packages/e2e-tests/specs/editor/various/writing-flow.test.js @@ -440,4 +440,21 @@ describe( 'Writing Flow', () => { expect( await getEditedPostContent() ).toMatchSnapshot(); } ); + + it( 'should allow selecting entire list with longer last item', async () => { + await page.keyboard.press( 'Enter' ); + await page.keyboard.type( 'a' ); + await page.keyboard.press( 'Enter' ); + await page.keyboard.type( '* b' ); + await page.keyboard.press( 'Enter' ); + await page.keyboard.type( 'cd' ); + await pressKeyWithModifier( 'shift', 'ArrowUp' ); + await pressKeyWithModifier( 'shift', 'ArrowUp' ); + + // Ensure multi selection is not triggered and selection stays within + // the list. + await page.keyboard.press( 'Backspace' ); + + expect( await getEditedPostContent() ).toMatchSnapshot(); + } ); } );