From 3796cabb377247541b39b24a9f25c5db9c856d64 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Thu, 21 Mar 2024 21:41:46 +0800 Subject: [PATCH] fix: paste list element boundary error #487 --- src/editor/core/draw/Draw.ts | 12 ++++++++++++ src/editor/core/event/handlers/keydown/index.ts | 13 ++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index 82e4508..edfc5a3 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -581,6 +581,18 @@ export class Draw { } this.spliceElementList(elementList, start, 0, ...payload) curIndex = startIndex + payload.length + // 列表前如有换行符则删除-因为列表内已存在 + const preElement = elementList[start - 1] + if ( + payload[0].listId && + preElement && + !preElement.listId && + preElement?.value === ZERO && + (!preElement.type || preElement.type === ElementType.TEXT) + ) { + elementList.splice(startIndex, 1) + curIndex -= 1 + } } if (~curIndex) { this.range.setRange(curIndex, curIndex) diff --git a/src/editor/core/event/handlers/keydown/index.ts b/src/editor/core/event/handlers/keydown/index.ts index c01f8d6..7a6c41a 100644 --- a/src/editor/core/event/handlers/keydown/index.ts +++ b/src/editor/core/event/handlers/keydown/index.ts @@ -33,9 +33,16 @@ export function keydown(evt: KeyboardEvent, host: CanvasEvent) { curIndex = control.keydown(evt) } else { // 判断是否允许删除 - if (isCollapsed && elementList[index].value === ZERO && index === 0) { - evt.preventDefault() - return + if (isCollapsed && index === 0) { + const firstElement = elementList[index] + if (firstElement.value === ZERO) { + // 取消首字符列表设置 + if (firstElement.listId) { + draw.getListParticle().unsetList() + } + evt.preventDefault() + return + } } // 清空当前行对齐方式 const startElement = elementList[startIndex]