From d60e9a38851b15310ddfd7062d4249bebb8ce242 Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Thu, 26 Dec 2024 09:46:39 +0000 Subject: [PATCH] fix(editor): block selection delete conflict with native selection (#9340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: [BS-2228](https://linear.app/affine-design/issue/BS-2228/[bug]-选区删除拖拽失灵) --- .../src/root-block/keyboard/keyboard-manager.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/blocksuite/blocks/src/root-block/keyboard/keyboard-manager.ts b/blocksuite/blocks/src/root-block/keyboard/keyboard-manager.ts index 6d8da439c9..313b124b23 100644 --- a/blocksuite/blocks/src/root-block/keyboard/keyboard-manager.ts +++ b/blocksuite/blocks/src/root-block/keyboard/keyboard-manager.ts @@ -5,12 +5,17 @@ import { promptDocTitle, } from '@blocksuite/affine-block-embed'; import { matchFlavours } from '@blocksuite/affine-shared/utils'; -import type { BlockComponent, BlockSelection } from '@blocksuite/block-std'; +import type { + BlockComponent, + BlockSelection, + UIEventHandler, +} from '@blocksuite/block-std'; import { IS_MAC, IS_WINDOWS } from '@blocksuite/global/env'; import { assertExists } from '@blocksuite/global/utils'; export class PageKeyboardManager { - private readonly _handleDelete = () => { + private readonly _handleDelete: UIEventHandler = ctx => { + const event = ctx.get('keyboardState').raw; const blockSelections = this._currentSelection.filter(sel => sel.is('block') ); @@ -18,6 +23,7 @@ export class PageKeyboardManager { return; } + event.preventDefault(); this._doc.transact(() => { const selection = this._replaceBlocksBySelection( blockSelections, @@ -79,9 +85,9 @@ export class PageKeyboardManager { 'Mod-Backspace': () => true, Backspace: this._handleDelete, Delete: this._handleDelete, - 'Control-d': () => { + 'Control-d': ctx => { if (!IS_MAC) return; - this._handleDelete(); + this._handleDelete(ctx); }, 'Mod-Shift-l': () => { this._createEmbedBlock();