mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-03 22:59:14 +00:00
[backport core/1.38] fix: dragging (e.g., when selecting text) in Markdown note causes node to drag (#8427)
Backport of #8413 to `core/1.38` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8427-backport-core-1-38-fix-dragging-e-g-when-selecting-text-in-Markdown-note-causes-no-2f76d73d3650813e8e28c101270bc42f) by [Unito](https://www.unito.io) Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: Subagent 5 <subagent@example.com> Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -206,6 +206,60 @@ describe('WidgetMarkdown Dual Mode Display', () => {
|
||||
expect(clickSpy).not.toHaveBeenCalled()
|
||||
expect(keydownSpy).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
describe('Pointer Event Propagation', () => {
|
||||
it('stops pointerdown propagation to prevent node drag during text selection', async () => {
|
||||
const widget = createMockWidget('# Test')
|
||||
const wrapper = mountComponent(widget, '# Test')
|
||||
|
||||
await clickToEdit(wrapper)
|
||||
|
||||
const textarea = wrapper.find('textarea')
|
||||
expect(textarea.exists()).toBe(true)
|
||||
|
||||
const parentPointerdownHandler = vi.fn()
|
||||
const wrapperEl = wrapper.element as HTMLElement
|
||||
wrapperEl.addEventListener('pointerdown', parentPointerdownHandler)
|
||||
|
||||
await textarea.trigger('pointerdown')
|
||||
|
||||
expect(parentPointerdownHandler).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('stops pointermove propagation during text selection', async () => {
|
||||
const widget = createMockWidget('# Test')
|
||||
const wrapper = mountComponent(widget, '# Test')
|
||||
|
||||
await clickToEdit(wrapper)
|
||||
|
||||
const textarea = wrapper.find('textarea')
|
||||
|
||||
const parentPointermoveHandler = vi.fn()
|
||||
const wrapperEl = wrapper.element as HTMLElement
|
||||
wrapperEl.addEventListener('pointermove', parentPointermoveHandler)
|
||||
|
||||
await textarea.trigger('pointermove')
|
||||
|
||||
expect(parentPointermoveHandler).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('stops pointerup propagation after text selection', async () => {
|
||||
const widget = createMockWidget('# Test')
|
||||
const wrapper = mountComponent(widget, '# Test')
|
||||
|
||||
await clickToEdit(wrapper)
|
||||
|
||||
const textarea = wrapper.find('textarea')
|
||||
|
||||
const parentPointerupHandler = vi.fn()
|
||||
const wrapperEl = wrapper.element as HTMLElement
|
||||
wrapperEl.addEventListener('pointerup', parentPointerupHandler)
|
||||
|
||||
await textarea.trigger('pointerup')
|
||||
|
||||
expect(parentPointerupHandler).not.toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Value Updates', () => {
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
}
|
||||
}"
|
||||
data-capture-wheel="true"
|
||||
@pointerdown.capture.stop
|
||||
@pointermove.capture.stop
|
||||
@pointerup.capture.stop
|
||||
@click.stop
|
||||
@keydown.stop
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user