Skip to content

Commit 083da8e

Browse files
committed
fixed(display): Mouse-events are not propagated through the DOM on touch devices when the user taps the map.
Signed-off-by: Tim Deubler <[email protected]>
1 parent 55fe803 commit 083da8e

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

packages/display/src/event/Dispatcher.ts

+19-6
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,16 @@ export class EventDispatcher {
192192
currentHoverTarget = target;
193193
}
194194

195+
let skipMouseEvent = false;
196+
195197
this.onPointerDown = function(ev) {
198+
const isTouchStart = ev.type == 'touchstart';
199+
200+
if (!isTouchStart && skipMouseEvent) {
201+
skipMouseEvent = false;
202+
return;
203+
}
204+
196205
startMapCenter = map.getCenter();
197206
isPointerDown = true;
198207
isDragged = false;
@@ -201,12 +210,19 @@ export class EventDispatcher {
201210
trigger(POINTER_DOWN, ev, MOUSEDOWN_POS, MOUSEDOWN_TARGET);
202211

203212
// make sure no mousedown is triggered to prevent double triggering of event!
204-
if (ev.type == 'touchstart' && (<HTMLElement>ev.target).parentNode == domEl) {
205-
ev.preventDefault();
213+
if (isTouchStart && (<HTMLElement>ev.target).parentNode == domEl) {
214+
skipMouseEvent = true;
215+
// ev.preventDefault();
206216
}
207217
};
208218

209219
this.onPointerMove = function(ev) {
220+
const isMouseMove = ev.type == 'mousemove';
221+
222+
if (isMouseMove && skipMouseEvent) {
223+
return;
224+
}
225+
210226
let pos;
211227
let dx;
212228
let dy;
@@ -227,7 +243,7 @@ export class EventDispatcher {
227243
isDragged = true;
228244

229245
if (!isPointerDown) {
230-
if (ev.type != 'touchmove' && (
246+
if (isMouseMove && (
231247
callbacks.isListened(POINTER_ENTER) ||
232248
callbacks.isListened(POINTER_LEAVE) ||
233249
callbacks.isListened(POINTER_MOVE)
@@ -237,11 +253,8 @@ export class EventDispatcher {
237253
}
238254
} else if (isFeatureDragListened()) {
239255
pos = getMousePosition(domEl, ev);
240-
241256
dx = pos[0] - MOUSEDOWN_POS[0];
242-
243257
dy = pos[1] - MOUSEDOWN_POS[1];
244-
245258
callbacks.trigger(PRESSMOVE, [createMapEvent(PRESSMOVE, ev, pos[0], pos[1], MOUSEDOWN_TARGET), dx, dy], false);
246259
}
247260
};

0 commit comments

Comments
 (0)