From 2de804d5a40f6e98da017f0ed720c4c81fbae849 Mon Sep 17 00:00:00 2001 From: ruslan Date: Fri, 25 Aug 2023 00:30:56 +0100 Subject: [PATCH] fix: filter pointer events if it's already handled by mouse events handlers --- src/dd-touch.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/dd-touch.ts b/src/dd-touch.ts index 794ecdae6..231f12bd3 100644 --- a/src/dd-touch.ts +++ b/src/dd-touch.ts @@ -175,7 +175,9 @@ export function touchend(e: TouchEvent): void { */ export function pointerdown(e: PointerEvent): void { // console.log("pointer down") - (e.target as HTMLElement).releasePointerCapture(e.pointerId) // <- Important! + if (e.pointerType !== 'mouse') { + (e.target as HTMLElement).releasePointerCapture(e.pointerId) // <- Important! + } } export function pointerenter(e: PointerEvent): void { @@ -185,7 +187,9 @@ export function pointerenter(e: PointerEvent): void { return; } // console.log('pointerenter'); - simulatePointerMouseEvent(e, 'mouseenter'); + if (e.pointerType !== 'mouse') { + simulatePointerMouseEvent(e, 'mouseenter'); + } } export function pointerleave(e: PointerEvent): void { @@ -195,10 +199,12 @@ export function pointerleave(e: PointerEvent): void { // console.log('pointerleave ignored'); return; } - DDTouch.pointerLeaveTimeout = window.setTimeout(() => { - delete DDTouch.pointerLeaveTimeout; - // console.log('pointerleave delayed'); - simulatePointerMouseEvent(e, 'mouseleave'); - }, 10); + if (e.pointerType !== 'mouse') { + DDTouch.pointerLeaveTimeout = window.setTimeout(() => { + delete DDTouch.pointerLeaveTimeout; + // console.log('pointerleave delayed'); + simulatePointerMouseEvent(e, 'mouseleave'); + }, 10); + } }