🐛 修复表格拖选文字 Ctrl+C 偶发失效
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user