fix: elements in the table cannot be selected #378

pr675
Hufe921 2 years ago
parent f542739d3e
commit 1477bd0e3f

@ -232,13 +232,19 @@ export class RangeManager {
public getIsSelectAll() {
const elementList = this.draw.getElementList()
const { startIndex, endIndex } = this.range
return startIndex === 0 && elementList.length - 1 === endIndex
return (
startIndex === 0 &&
elementList.length - 1 === endIndex &&
!this.position.getPositionContext().isTable
)
}
public getIsPointInRange(x: number, y: number): boolean {
const { startIndex, endIndex } = this.range
const positionList = this.position.getPositionList()
for (let p = startIndex + 1; p <= endIndex; p++) {
const position = positionList[p]
if (!position) break
const {
coordinate: { leftTop, rightBottom }
} = positionList[p]

@ -645,6 +645,8 @@ export function formatElementContext(
const copyElement = getAnchorElement(sourceElementList, anchorIndex)
if (!copyElement) return
const { isBreakWhenWrap = false } = options || {}
// 是否已经换行
let isBreakWarped = false
for (let e = 0; e < formatElementList.length; e++) {
const targetElement = formatElementList[e]
if (
@ -652,10 +654,15 @@ export function formatElementContext(
!copyElement.listId &&
/^\n/.test(targetElement.value)
) {
break
isBreakWarped = true
}
// 定位元素非列表,无需处理粘贴列表的上下文
if (!copyElement.listId && targetElement.type === ElementType.LIST) {
// 1. 即使换行停止也要处理表格上下文信息
// 2. 定位元素非列表,无需处理粘贴列表的上下文,仅处理表格上下文信息
if (
isBreakWarped ||
(!copyElement.listId && targetElement.type === ElementType.LIST)
) {
cloneProperty<IElement>(TABLE_CONTEXT_ATTR, copyElement, targetElement)
targetElement.valueList?.forEach(valueItem => {
cloneProperty<IElement>(TABLE_CONTEXT_ATTR, copyElement, valueItem)
})

Loading…
Cancel
Save