Skip to content

Commit fcc32c9

Browse files
authored
Change offsetX and offsetY calculations in PointerEventManager (#2938)
## Description While working on `PointerTracker` refactor and adding `relativeCoords` to it, I've noticed that `offsetX`/`offsetY` in `PointerEventManager` use `PointerEvent.offsetX` (and `offsetY` respectively) while `TouchEventManager` calculates this property by calculating the difference between `clientX` and bounding box (`event.clientX - rect.left`). I've decided to unify this behavior so that `offset` is now calculated in `PointerEventManager` the same way as in `TouchEventManager`. As. you can see in the videos below, those 2 values may have different results - that is the main reason behind unifying them. `offset` property is used only in `relativeCoords` which have been recently introduced, so it won't be a breaking change. ## Test plan Tested by adding `console.table` in `onPointerMove` inside `PanGestureHandler`
1 parent f393b8e commit fcc32c9

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/web/tools/PointerEventManager.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,13 +238,14 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
238238
}
239239

240240
protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {
241+
const rect = this.view.getBoundingClientRect();
241242
const { scaleX, scaleY } = calculateViewScale(this.view);
242243

243244
return {
244245
x: event.clientX,
245246
y: event.clientY,
246-
offsetX: event.offsetX / scaleX,
247-
offsetY: event.offsetY / scaleY,
247+
offsetX: (event.clientX - rect.left) / scaleX,
248+
offsetY: (event.clientY - rect.top) / scaleY,
248249
pointerId: event.pointerId,
249250
eventType: eventType,
250251
pointerType:

0 commit comments

Comments
 (0)