From 3cc335e6155867752b03dbef4301f4e0bb330a75 Mon Sep 17 00:00:00 2001 From: Vincent Riemer Date: Tue, 12 Jul 2022 18:10:27 -0700 Subject: [PATCH] Add tangentialPressure property to PointerEvent interface Summary: Changelog: [iOS][internal] - Add tangentialPressure property to PointerEvent interface This diff adds the tangentialPressure property to the PointerEvent implementation on iOS. This one is pretty simple considering iOS doesn't have the concept of tangential pressure so we just hard code it to 0 as defined by the spec. Reviewed By: lunaleaps Differential Revision: D37759634 fbshipit-source-id: 7ca0e47267f5fde76ace2b96d05ea2e154cb4b8f --- React/Fabric/RCTSurfaceTouchHandler.mm | 3 +++ .../react/renderer/components/view/PointerEvent.cpp | 2 ++ ReactCommon/react/renderer/components/view/PointerEvent.h | 8 +++++++- .../react/renderer/components/view/TouchEventEmitter.cpp | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/React/Fabric/RCTSurfaceTouchHandler.mm b/React/Fabric/RCTSurfaceTouchHandler.mm index abc0c593045..dea8bfe2244 100644 --- a/React/Fabric/RCTSurfaceTouchHandler.mm +++ b/React/Fabric/RCTSurfaceTouchHandler.mm @@ -279,6 +279,8 @@ static PointerEvent CreatePointerEventFromActiveTouch(ActiveTouch activeTouch, R event.buttons = 0; } + event.tangentialPressure = 0.0; + return event; } @@ -299,6 +301,7 @@ CreatePointerEventFromIncompleteHoverData(UIView *view, CGPoint clientLocation, event.tiltY = 0; event.detail = 0; event.buttons = 0; + event.tangentialPressure = 0.0; return event; } diff --git a/ReactCommon/react/renderer/components/view/PointerEvent.cpp b/ReactCommon/react/renderer/components/view/PointerEvent.cpp index cafbc365485..727b93fcfa3 100644 --- a/ReactCommon/react/renderer/components/view/PointerEvent.cpp +++ b/ReactCommon/react/renderer/components/view/PointerEvent.cpp @@ -30,6 +30,8 @@ std::vector getDebugProps( {"tiltY", getDebugDescription(pointerEvent.tiltY, options)}, {"detail", getDebugDescription(pointerEvent.detail, options)}, {"buttons", getDebugDescription(pointerEvent.buttons, options)}, + {"tangentialPressure", + getDebugDescription(pointerEvent.tangentialPressure, options)}, }; } diff --git a/ReactCommon/react/renderer/components/view/PointerEvent.h b/ReactCommon/react/renderer/components/view/PointerEvent.h index c08a8f75483..6014b32b73d 100644 --- a/ReactCommon/react/renderer/components/view/PointerEvent.h +++ b/ReactCommon/react/renderer/components/view/PointerEvent.h @@ -56,7 +56,7 @@ struct PointerEvent { * the X axis. */ int tiltY; - /** + /* * Returns a long with details about the event, depending on the event type. */ int detail; @@ -64,6 +64,12 @@ struct PointerEvent { * The buttons being depressed (if any) when the mouse event was fired. */ int buttons; + /* + * The normalized tangential pressure of the pointer input (also known as + * barrel pressure or cylinder stress) in the range -1 to 1, where 0 is the + * neutral position of the control. + */ + Float tangentialPressure; }; #if RN_DEBUG_STRING_CONVERTIBLE diff --git a/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp b/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp index 690fdf51d88..a0f54dc2099 100644 --- a/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +++ b/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp @@ -74,6 +74,7 @@ static jsi::Value pointerEventPayload( object.setProperty(runtime, "tiltY", event.tiltY); object.setProperty(runtime, "detail", event.detail); object.setProperty(runtime, "buttons", event.buttons); + object.setProperty(runtime, "tangentialPressure", event.tangentialPressure); return object; }