mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Ensure that pointercancel events have a zeroed location
Summary: Changelog: [Internal] - Ensure pointercancel events have zeroed location properties When looking at the pointercancel test the remaining assertion failures were from the expectation that pointercancel events should be reported at [0, 0]. This diff ensures this occurs. Reviewed By: NickGerleman Differential Revision: D43886424 fbshipit-source-id: dda37153bd077500599f35db99f114c1a0823120
This commit is contained in:
committed by
Facebook GitHub Bot
parent
bfee3d9d8d
commit
728e8a0177
@@ -263,14 +263,27 @@ static void UpdatePointerEventModifierFlags(PointerEvent &event, UIKeyModifierFl
|
||||
}
|
||||
}
|
||||
|
||||
static PointerEvent CreatePointerEventFromActivePointer(ActivePointer activePointer, RCTPointerEventType eventType)
|
||||
static PointerEvent CreatePointerEventFromActivePointer(
|
||||
ActivePointer activePointer,
|
||||
RCTPointerEventType eventType,
|
||||
UIView *rootComponentView)
|
||||
{
|
||||
PointerEvent event = {};
|
||||
event.pointerId = activePointer.identifier;
|
||||
event.pointerType = PointerTypeCStringFromUITouchType(activePointer.touchType);
|
||||
event.clientPoint = RCTPointFromCGPoint(activePointer.clientPoint);
|
||||
event.screenPoint = RCTPointFromCGPoint(activePointer.screenPoint);
|
||||
event.offsetPoint = RCTPointFromCGPoint(activePointer.offsetPoint);
|
||||
|
||||
if (eventType == RCTPointerEventTypeCancel) {
|
||||
event.clientPoint = RCTPointFromCGPoint(CGPointZero);
|
||||
event.screenPoint =
|
||||
RCTPointFromCGPoint([rootComponentView convertPoint:CGPointZero
|
||||
toCoordinateSpace:rootComponentView.window.screen.coordinateSpace]);
|
||||
event.offsetPoint = RCTPointFromCGPoint([rootComponentView convertPoint:CGPointZero
|
||||
toView:activePointer.componentView]);
|
||||
} else {
|
||||
event.clientPoint = RCTPointFromCGPoint(activePointer.clientPoint);
|
||||
event.screenPoint = RCTPointFromCGPoint(activePointer.screenPoint);
|
||||
event.offsetPoint = RCTPointFromCGPoint(activePointer.offsetPoint);
|
||||
}
|
||||
|
||||
event.pressure = activePointer.force;
|
||||
if (@available(iOS 13.4, *)) {
|
||||
@@ -608,7 +621,7 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithTarget : (id)target action : (SEL)act
|
||||
- (void)_dispatchActivePointers:(std::vector<ActivePointer>)activePointers eventType:(RCTPointerEventType)eventType
|
||||
{
|
||||
for (const auto &activePointer : activePointers) {
|
||||
PointerEvent pointerEvent = CreatePointerEventFromActivePointer(activePointer, eventType);
|
||||
PointerEvent pointerEvent = CreatePointerEventFromActivePointer(activePointer, eventType, _rootComponentView);
|
||||
NSOrderedSet<RCTReactTaggedView *> *eventPathViews = [self handleIncomingPointerEvent:pointerEvent
|
||||
onView:activePointer.componentView];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user