🐛 修复表格拖选文字 Ctrl+C 偶发失效

This commit is contained in:
caojia
2026-10-10 18:04:09 +08:00
parent adc2160c91
commit c7da1a004b
+12 -2
View File
@@ -250,10 +250,18 @@ function handleClick(event) {
suppressClickRoot = null
}
function handleFocusIn(event) {
if (!activeSelection) return
const target = event.target instanceof Element ? event.target : event.target?.parentElement
if (!target) return
if (!activeSelection.context.el.contains(target) || target.closest(EDITABLE_SELECTOR)) {
clearSelection()
}
}
function handleCopy(event) {
if (!activeSelection || dragging || !event.clipboardData) return
const target = event.target instanceof Element ? event.target : event.target?.parentElement
if (target?.closest(EDITABLE_SELECTOR)) return
const text = selectedTextSegments().map(segment => segment.text).join('\n')
if (!text) return
@@ -268,6 +276,7 @@ function installListeners() {
document.addEventListener('mouseup', handleMouseUp)
document.addEventListener('dblclick', handleDoubleClick)
document.addEventListener('click', handleClick, true)
document.addEventListener('focusin', handleFocusIn, true)
document.addEventListener('copy', handleCopy, true)
listenersInstalled = true
}
@@ -279,6 +288,7 @@ function removeListeners() {
document.removeEventListener('mouseup', handleMouseUp)
document.removeEventListener('dblclick', handleDoubleClick)
document.removeEventListener('click', handleClick, true)
document.removeEventListener('focusin', handleFocusIn, true)
document.removeEventListener('copy', handleCopy, true)
listenersInstalled = false
}