From 1cdc6ead73738cd0d906baf0254400d4f69f7631 Mon Sep 17 00:00:00 2001 From: yogeshbhutkar Date: Tue, 24 Dec 2024 14:21:01 +0530 Subject: [PATCH] KeyboardShortcuts: Change delete shortcut to primaryShift + Backspace --- .../src/components/keyboard-shortcuts/index.js | 6 ------ .../rich-text/event-listeners/delete.js | 7 ++++++- test/e2e/specs/editor/blocks/navigation.spec.js | 10 +++++----- .../specs/editor/various/block-deletion.spec.js | 2 +- test/e2e/specs/editor/various/list-view.spec.js | 16 ++++++++++------ test/e2e/specs/site-editor/template-part.spec.js | 2 +- test/e2e/specs/widgets/editing-widgets.spec.js | 2 +- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/packages/block-editor/src/components/keyboard-shortcuts/index.js b/packages/block-editor/src/components/keyboard-shortcuts/index.js index dfe2020617f007..4d368e6c1d0ab4 100644 --- a/packages/block-editor/src/components/keyboard-shortcuts/index.js +++ b/packages/block-editor/src/components/keyboard-shortcuts/index.js @@ -32,12 +32,6 @@ function KeyboardShortcutsRegister() { modifier: 'primaryShift', character: 'backspace', }, - aliases: [ - { - modifier: 'primaryShift', - character: 'delete', - }, - ], } ); registerShortcut( { diff --git a/packages/block-editor/src/components/rich-text/event-listeners/delete.js b/packages/block-editor/src/components/rich-text/event-listeners/delete.js index ae3fd733bb94e1..9300e1b88cf3a1 100644 --- a/packages/block-editor/src/components/rich-text/event-listeners/delete.js +++ b/packages/block-editor/src/components/rich-text/event-listeners/delete.js @@ -6,7 +6,7 @@ import { isCollapsed, isEmpty } from '@wordpress/rich-text'; export default ( props ) => ( element ) => { function onKeyDown( event ) { - const { keyCode } = event; + const { keyCode, ctrlKey, metaKey, shiftKey } = event; if ( event.defaultPrevented ) { return; @@ -30,6 +30,11 @@ export default ( props ) => ( element ) => { return; } + // Exclude (command|ctrl)+shift+backspace as they are shortcuts for deleting blocks. + if ( ( ctrlKey && shiftKey ) || ( metaKey && shiftKey ) ) { + return; + } + if ( onMerge ) { onMerge( ! isReverse ); } diff --git a/test/e2e/specs/editor/blocks/navigation.spec.js b/test/e2e/specs/editor/blocks/navigation.spec.js index 68dc35f555f31b..c04ef78811e069 100644 --- a/test/e2e/specs/editor/blocks/navigation.spec.js +++ b/test/e2e/specs/editor/blocks/navigation.spec.js @@ -276,7 +276,7 @@ test.describe( 'Navigation block', () => { await pageUtils.pressKeys( 'ArrowDown' ); // remove the child link - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); const submenuBlock2 = editor.canvas.getByRole( 'document', { name: 'Block: Submenu', @@ -494,7 +494,7 @@ test.describe( 'Navigation block', () => { await pageUtils.pressKeys( 'ArrowDown', { times: 4 } ); await navigation.checkLabelFocus( 'wordpress.org' ); // Delete the nav link - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); // Focus moved to sibling await navigation.checkLabelFocus( 'Dog' ); // Add a link back so we can delete the first submenu link and see if focus returns to the parent submenu item @@ -507,15 +507,15 @@ test.describe( 'Navigation block', () => { await pageUtils.pressKeys( 'ArrowUp', { times: 2 } ); await navigation.checkLabelFocus( 'Dog' ); // Delete the nav link - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await pageUtils.pressKeys( 'ArrowDown' ); // Focus moved to parent submenu item await navigation.checkLabelFocus( 'example.com' ); // Deleting this should move focus to the sibling item - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await navigation.checkLabelFocus( 'Cat' ); // Deleting with no more siblings should focus the navigation block again - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await expect( navBlock ).toBeFocused(); // Wait until the nav block inserter is visible before we continue. await expect( navBlockInserter ).toBeVisible(); diff --git a/test/e2e/specs/editor/various/block-deletion.spec.js b/test/e2e/specs/editor/various/block-deletion.spec.js index 062d799280b138..f90923c6dc3829 100644 --- a/test/e2e/specs/editor/various/block-deletion.spec.js +++ b/test/e2e/specs/editor/various/block-deletion.spec.js @@ -134,7 +134,7 @@ test.describe( 'Block deletion', () => { ).toBeFocused(); // Remove the current paragraph via dedicated keyboard shortcut. - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); // Ensure the last block was removed. await expect.poll( editor.getBlocks ).toMatchObject( [ diff --git a/test/e2e/specs/editor/various/list-view.spec.js b/test/e2e/specs/editor/various/list-view.spec.js index ac10c5a49a7f44..7319fa3e3dbff8 100644 --- a/test/e2e/specs/editor/various/list-view.spec.js +++ b/test/e2e/specs/editor/various/list-view.spec.js @@ -809,8 +809,8 @@ test.describe( 'List View', () => { // Delete remaining blocks. // Keyboard shortcut should also work. - await pageUtils.pressKeys( 'primaryShift+Delete' ); - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await expect .poll( listViewUtils.getBlocksWithA11yAttributes, @@ -842,7 +842,7 @@ test.describe( 'List View', () => { { name: 'core/heading', selected: false }, ] ); - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await expect .poll( listViewUtils.getBlocksWithA11yAttributes, @@ -865,7 +865,11 @@ test.describe( 'List View', () => { .getByRole( 'gridcell', { name: 'File' } ) .getByRole( 'link' ) .focus(); - for ( const keys of [ 'Delete', 'Backspace', 'primaryShift+Delete' ] ) { + for ( const keys of [ + 'Delete', + 'Backspace', + 'primaryShift+Backspace', + ] ) { await pageUtils.pressKeys( keys ); await expect .poll( @@ -1133,7 +1137,7 @@ test.describe( 'List View', () => { optionsForFileMenu, 'Pressing Space should also open the menu dropdown' ).toBeVisible(); - await pageUtils.pressKeys( 'primaryShift+Delete' ); // Keyboard shortcut for Delete. + await pageUtils.pressKeys( 'primaryShift+Backspace' ); // Keyboard shortcut for Delete. await expect .poll( listViewUtils.getBlocksWithA11yAttributes, @@ -1153,7 +1157,7 @@ test.describe( 'List View', () => { optionsForFileMenu.getByRole( 'menuitem', { name: 'Delete' } ), 'The delete menu item should be hidden for locked blocks' ).toBeHidden(); - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await expect .poll( listViewUtils.getBlocksWithA11yAttributes, diff --git a/test/e2e/specs/site-editor/template-part.spec.js b/test/e2e/specs/site-editor/template-part.spec.js index dc65cba64b7910..d3feeb866619a2 100644 --- a/test/e2e/specs/site-editor/template-part.spec.js +++ b/test/e2e/specs/site-editor/template-part.spec.js @@ -375,7 +375,7 @@ test.describe( 'Template Part', () => { await editor.selectBlocks( siteTitle ); // Remove the default site title block. - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); // Insert a group block with a Site Title block inside. await editor.insertBlock( { diff --git a/test/e2e/specs/widgets/editing-widgets.spec.js b/test/e2e/specs/widgets/editing-widgets.spec.js index edd365365776ae..648b04d3e202b2 100644 --- a/test/e2e/specs/widgets/editing-widgets.spec.js +++ b/test/e2e/specs/widgets/editing-widgets.spec.js @@ -573,7 +573,7 @@ test.describe( 'Widgets screen', () => { .getByRole( 'document', { name: 'Block: Paragraph' } ) .filter( { hasText: 'Second Paragraph' } ) .focus(); - await pageUtils.pressKeys( 'primaryShift+Delete' ); + await pageUtils.pressKeys( 'primaryShift+Backspace' ); await widgetsScreen.saveWidgets(); await expect.poll( widgetsScreen.getWidgetAreaBlocks ).toMatchObject( {