Skip to content

Commit aec9a15

Browse files
authored
Merge branch 'next' into @akwasniewski/v3-pressable
2 parents b11757f + ef4a33e commit aec9a15

File tree

21 files changed

+167
-104
lines changed

21 files changed

+167
-104
lines changed

packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ open class GestureHandler {
3030
private var trackedPointersIDsCount = 0
3131
private val windowOffset = IntArray(2) { 0 }
3232
var tag = 0
33+
var testID: String? = null
3334
var view: View? = null
3435
private set
3536

@@ -126,6 +127,7 @@ open class GestureHandler {
126127
}
127128

128129
open fun resetConfig() {
130+
testID = null
129131
needsPointerData = DEFAULT_NEEDS_POINTER_DATA
130132
manualActivation = DEFAULT_MANUAL_ACTIVATION
131133
shouldCancelWhenOutside = DEFAULT_SHOULD_CANCEL_WHEN_OUTSIDE
@@ -844,7 +846,7 @@ open class GestureHandler {
844846
open fun wantsToAttachDirectlyToView() = false
845847

846848
override fun toString(): String {
847-
val viewString = if (view == null) null else view!!.javaClass.simpleName
849+
val viewString = testID ?: view?.javaClass?.simpleName
848850
return this.javaClass.simpleName + "@[" + tag + "]:" + viewString
849851
}
850852

@@ -896,6 +898,9 @@ open class GestureHandler {
896898
if (config.hasKey(KEY_MOUSE_BUTTON)) {
897899
handler.mouseButton = config.getInt(KEY_MOUSE_BUTTON)
898900
}
901+
if (config.hasKey(KEY_TEST_ID)) {
902+
handler.testID = config.getString(KEY_TEST_ID)
903+
}
899904
}
900905

901906
abstract fun createEventBuilder(handler: T): GestureHandlerEventDataBuilder<T>
@@ -917,6 +922,7 @@ open class GestureHandler {
917922
private const val KEY_HIT_SLOP_HORIZONTAL = "horizontal"
918923
private const val KEY_HIT_SLOP_WIDTH = "width"
919924
private const val KEY_HIT_SLOP_HEIGHT = "height"
925+
private const val KEY_TEST_ID = "testID"
920926

921927
private fun handleHitSlopProperty(handler: GestureHandler, config: ReadableMap) {
922928
if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) {
@@ -1008,7 +1014,7 @@ open class GestureHandler {
10081014
const val POINTER_TYPE_STYLUS = 1
10091015
const val POINTER_TYPE_MOUSE = 2
10101016
const val POINTER_TYPE_OTHER = 3
1011-
private const val MAX_POINTERS_COUNT = 12
1017+
private const val MAX_POINTERS_COUNT = 17
10121018
private lateinit var pointerProps: Array<PointerProperties?>
10131019
private lateinit var pointerCoords: Array<PointerCoords?>
10141020
private fun initPointerProps(size: Int) {

packages/react-native-gesture-handler/apple/RNGestureHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
@property (nonatomic, weak, nullable) id<RNGestureHandlerEventEmitter> emitter;
7575
@property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer;
7676
@property (nonatomic, readonly, nullable) RNGestureHandlerPointerTracker *pointerTracker;
77+
@property (nonatomic, nullable) NSString *testID;
7778
@property (nonatomic) BOOL enabled;
7879
@property (nonatomic) RNGestureHandlerActionType actionType;
7980
@property (nonatomic) BOOL shouldCancelWhenOutside;

packages/react-native-gesture-handler/apple/RNGestureHandler.mm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#import <React/UIView+React.h>
1212

13+
#import <React/RCTEnhancedScrollView.h>
1314
#import <React/RCTParagraphComponentView.h>
1415
#import <React/RCTScrollViewComponentView.h>
1516

@@ -101,6 +102,7 @@ - (instancetype)initWithTag:(NSNumber *)tag
101102
- (void)resetConfig
102103
{
103104
self.enabled = YES;
105+
self.testID = nil;
104106
self.manualActivation = NO;
105107
_shouldCancelWhenOutside = NO;
106108
_hitSlop = RNGHHitSlopEmpty;
@@ -125,6 +127,11 @@ - (void)updateConfig:(NSDictionary *)config
125127
self.enabled = [RCTConvert BOOL:prop];
126128
}
127129

130+
prop = config[@"testID"];
131+
if (prop != nil) {
132+
self.testID = [RCTConvert NSString:prop];
133+
}
134+
128135
prop = config[@"shouldCancelWhenOutside"];
129136
if (prop != nil) {
130137
_shouldCancelWhenOutside = [RCTConvert BOOL:prop];
@@ -646,6 +653,10 @@ - (BOOL)isUIScrollViewPanGestureRecognizer:(NSGestureRecognizer *)gestureRecogni
646653

647654
- (RNGHUIScrollView *)retrieveScrollView:(RNGHUIView *)view
648655
{
656+
if ([view isKindOfClass:[RCTEnhancedScrollView class]]) {
657+
return (RCTEnhancedScrollView *)view;
658+
}
659+
649660
if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
650661
RNGHUIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
651662
return scrollView;

packages/react-native-gesture-handler/apple/RNGestureHandlerPointerTracker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#import "RNGHTouchEventType.h"
33
#import "RNGHUIKit.h"
44

5-
#define MAX_POINTERS_COUNT 12
5+
#define MAX_POINTERS_COUNT 17
66

77
@class RNGestureHandler;
88

packages/react-native-gesture-handler/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"!**/__mocks__",
3232
"android/build.gradle",
3333
"android/gradle.properties",
34+
"android/CMakeLists.txt",
3435
"android/src/main/AndroidManifest.xml",
3536
"android/src/main/java/",
3637
"android/src/main/jni/",

packages/react-native-gesture-handler/src/__tests__/RelationsTraversal.test.tsx

Lines changed: 62 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ describe('Simple relations', () => {
7575
configureRelations(composedGesture);
7676

7777
expect(pan1.gestureRelations.simultaneousHandlers).toStrictEqual([
78-
pan2.tag,
78+
pan2.handlerTag,
7979
]);
8080
expect(pan2.gestureRelations.simultaneousHandlers).toStrictEqual([
81-
pan1.tag,
81+
pan1.handlerTag,
8282
]);
8383
});
8484

@@ -88,7 +88,7 @@ describe('Simple relations', () => {
8888

8989
configureRelations(composedGesture);
9090

91-
expect(pan1.gestureRelations.waitFor).toStrictEqual([pan2.tag]);
91+
expect(pan1.gestureRelations.waitFor).toStrictEqual([pan2.handlerTag]);
9292
expect(pan2.gestureRelations.waitFor).toStrictEqual([]);
9393
});
9494

@@ -131,13 +131,13 @@ describe('External relations', () => {
131131
configureRelations(pan3);
132132

133133
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
134-
[pan2.tag, pan3.tag].sort()
134+
[pan2.handlerTag, pan3.handlerTag].sort()
135135
);
136136
expect(pan2.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
137-
[pan1.tag, pan3.tag].sort()
137+
[pan1.handlerTag, pan3.handlerTag].sort()
138138
);
139139
expect(pan3.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
140-
[pan1.tag, pan2.tag].sort()
140+
[pan1.handlerTag, pan2.handlerTag].sort()
141141
);
142142
});
143143

@@ -163,8 +163,11 @@ describe('External relations', () => {
163163
configureRelations(pan3);
164164

165165
expect(pan1.gestureRelations.waitFor).toStrictEqual([]);
166-
expect(pan2.gestureRelations.waitFor).toStrictEqual([pan1.tag]);
167-
expect(pan3.gestureRelations.waitFor).toStrictEqual([pan1.tag, pan2.tag]);
166+
expect(pan2.gestureRelations.waitFor).toStrictEqual([pan1.handlerTag]);
167+
expect(pan3.gestureRelations.waitFor).toStrictEqual([
168+
pan1.handlerTag,
169+
pan2.handlerTag,
170+
]);
168171
});
169172

170173
test('blocks', () => {
@@ -189,10 +192,12 @@ describe('External relations', () => {
189192
configureRelations(pan3);
190193

191194
expect(pan1.gestureRelations.blocksHandlers).toStrictEqual([]);
192-
expect(pan2.gestureRelations.blocksHandlers).toStrictEqual([pan1.tag]);
195+
expect(pan2.gestureRelations.blocksHandlers).toStrictEqual([
196+
pan1.handlerTag,
197+
]);
193198
expect(pan3.gestureRelations.blocksHandlers).toStrictEqual([
194-
pan1.tag,
195-
pan2.tag,
199+
pan1.handlerTag,
200+
pan2.handlerTag,
196201
]);
197202
});
198203
});
@@ -241,35 +246,35 @@ describe('Complex relations', () => {
241246

242247
expect(tap1.gestureRelations.waitFor).toStrictEqual([]);
243248
expect(tap1.gestureRelations.simultaneousHandlers).toStrictEqual([
244-
pan1.tag,
249+
pan1.handlerTag,
245250
]);
246251

247-
expect(tap2.gestureRelations.waitFor).toStrictEqual([tap1.tag]);
252+
expect(tap2.gestureRelations.waitFor).toStrictEqual([tap1.handlerTag]);
248253
expect(tap2.gestureRelations.simultaneousHandlers).toStrictEqual([
249-
pan1.tag,
254+
pan1.handlerTag,
250255
]);
251256

252257
expect(pan1.gestureRelations.waitFor).toStrictEqual([]);
253258
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
254-
[tap1.tag, tap2.tag].sort()
259+
[tap1.handlerTag, tap2.handlerTag].sort()
255260
);
256261

257262
expect(pan2.gestureRelations.waitFor).toStrictEqual([
258-
tap1.tag,
259-
tap2.tag,
260-
pan1.tag,
263+
tap1.handlerTag,
264+
tap2.handlerTag,
265+
pan1.handlerTag,
261266
]);
262267
expect(pan2.gestureRelations.simultaneousHandlers).toStrictEqual([
263-
pan3.tag,
268+
pan3.handlerTag,
264269
]);
265270

266271
expect(pan3.gestureRelations.waitFor).toStrictEqual([
267-
tap1.tag,
268-
tap2.tag,
269-
pan1.tag,
272+
tap1.handlerTag,
273+
tap2.handlerTag,
274+
pan1.handlerTag,
270275
]);
271276
expect(pan3.gestureRelations.simultaneousHandlers).toStrictEqual([
272-
pan2.tag,
277+
pan2.handlerTag,
273278
]);
274279
});
275280

@@ -284,14 +289,14 @@ describe('Complex relations', () => {
284289
expect(tap1.gestureRelations.waitFor).toStrictEqual([]);
285290
expect(tap1.gestureRelations.simultaneousHandlers).toStrictEqual([]);
286291

287-
expect(pan1.gestureRelations.waitFor).toStrictEqual([tap1.tag]);
292+
expect(pan1.gestureRelations.waitFor).toStrictEqual([tap1.handlerTag]);
288293
expect(pan1.gestureRelations.simultaneousHandlers).toStrictEqual([
289-
pan2.tag,
294+
pan2.handlerTag,
290295
]);
291296

292-
expect(pan2.gestureRelations.waitFor).toStrictEqual([tap1.tag]);
297+
expect(pan2.gestureRelations.waitFor).toStrictEqual([tap1.handlerTag]);
293298
expect(pan2.gestureRelations.simultaneousHandlers).toStrictEqual([
294-
pan1.tag,
299+
pan1.handlerTag,
295300
]);
296301
});
297302

@@ -304,10 +309,13 @@ describe('Complex relations', () => {
304309
expect(tap1.gestureRelations.waitFor).toStrictEqual([]);
305310
expect(tap1.gestureRelations.simultaneousHandlers).toStrictEqual([]);
306311

307-
expect(tap2.gestureRelations.waitFor).toStrictEqual([tap1.tag]);
312+
expect(tap2.gestureRelations.waitFor).toStrictEqual([tap1.handlerTag]);
308313
expect(tap2.gestureRelations.simultaneousHandlers).toStrictEqual([]);
309314

310-
expect(tap3.gestureRelations.waitFor).toStrictEqual([tap1.tag, tap2.tag]);
315+
expect(tap3.gestureRelations.waitFor).toStrictEqual([
316+
tap1.handlerTag,
317+
tap2.handlerTag,
318+
]);
311319
expect(tap3.gestureRelations.simultaneousHandlers).toStrictEqual([]);
312320
});
313321
});
@@ -355,35 +363,35 @@ describe('Complex relations with external gestures', () => {
355363
configureRelations(E);
356364

357365
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
358-
[pan2.tag, pan5.tag].sort()
366+
[pan2.handlerTag, pan5.handlerTag].sort()
359367
);
360368
expect(pan1.gestureRelations.waitFor).toStrictEqual([]);
361369

362370
expect(pan2.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
363-
[pan1.tag, pan5.tag].sort()
371+
[pan1.handlerTag, pan5.handlerTag].sort()
364372
);
365373
expect(pan2.gestureRelations.waitFor).toStrictEqual([]);
366374

367375
expect(pan3.gestureRelations.simultaneousHandlers).toStrictEqual([
368-
pan4.tag,
376+
pan4.handlerTag,
369377
]);
370378
expect(pan3.gestureRelations.waitFor).toStrictEqual([
371-
pan5.tag,
372-
pan1.tag,
373-
pan2.tag,
379+
pan5.handlerTag,
380+
pan1.handlerTag,
381+
pan2.handlerTag,
374382
]);
375383

376384
expect(pan4.gestureRelations.simultaneousHandlers).toStrictEqual([
377-
pan3.tag,
385+
pan3.handlerTag,
378386
]);
379387
expect(pan4.gestureRelations.waitFor).toStrictEqual([
380-
pan5.tag,
381-
pan1.tag,
382-
pan2.tag,
388+
pan5.handlerTag,
389+
pan1.handlerTag,
390+
pan2.handlerTag,
383391
]);
384392

385393
expect(pan5.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
386-
[pan1.tag, pan2.tag].sort()
394+
[pan1.handlerTag, pan2.handlerTag].sort()
387395
);
388396
});
389397

@@ -428,31 +436,31 @@ describe('Complex relations with external gestures', () => {
428436
configureRelations(S);
429437

430438
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
431-
[pan4.tag, pan5.tag, pan3.tag].sort()
439+
[pan4.handlerTag, pan5.handlerTag, pan3.handlerTag].sort()
432440
);
433441
expect(pan1.gestureRelations.waitFor).toStrictEqual([]);
434442

435443
expect(pan2.gestureRelations.simultaneousHandlers).toStrictEqual([
436-
pan3.tag,
444+
pan3.handlerTag,
437445
]);
438446
expect(pan2.gestureRelations.waitFor).toStrictEqual([
439-
pan4.tag,
440-
pan5.tag,
441-
pan1.tag,
447+
pan4.handlerTag,
448+
pan5.handlerTag,
449+
pan1.handlerTag,
442450
]);
443451

444452
expect(pan3.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
445-
[pan1.tag, pan2.tag].sort()
453+
[pan1.handlerTag, pan2.handlerTag].sort()
446454
);
447455
expect(pan3.gestureRelations.waitFor).toStrictEqual([]);
448456

449457
expect(pan4.gestureRelations.simultaneousHandlers).toStrictEqual([
450-
pan1.tag,
458+
pan1.handlerTag,
451459
]);
452460
expect(pan4.gestureRelations.waitFor).toStrictEqual([]);
453461

454462
expect(pan5.gestureRelations.simultaneousHandlers).toStrictEqual([
455-
pan1.tag,
463+
pan1.handlerTag,
456464
]);
457465
expect(pan5.gestureRelations.waitFor).toStrictEqual([]);
458466
});
@@ -487,13 +495,13 @@ describe('External relations with composed gestures', () => {
487495
configureRelations(pan3);
488496

489497
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
490-
[pan2.tag, pan3.tag].sort()
498+
[pan2.handlerTag, pan3.handlerTag].sort()
491499
);
492500
expect(pan2.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
493-
[pan1.tag, pan3.tag].sort()
501+
[pan1.handlerTag, pan3.handlerTag].sort()
494502
);
495503
expect(pan3.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
496-
[pan1.tag, pan2.tag].sort()
504+
[pan1.handlerTag, pan2.handlerTag].sort()
497505
);
498506
});
499507

@@ -525,13 +533,13 @@ describe('External relations with composed gestures', () => {
525533
configureRelations(composedGesture);
526534

527535
expect(pan1.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
528-
[pan2.tag, pan3.tag].sort()
536+
[pan2.handlerTag, pan3.handlerTag].sort()
529537
);
530538
expect(pan2.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
531-
[pan1.tag, pan3.tag].sort()
539+
[pan1.handlerTag, pan3.handlerTag].sort()
532540
);
533541
expect(pan3.gestureRelations.simultaneousHandlers.sort()).toStrictEqual(
534-
[pan1.tag, pan2.tag].sort()
542+
[pan1.handlerTag, pan2.handlerTag].sort()
535543
);
536544
});
537545
});

packages/react-native-gesture-handler/src/jestUtils/jestUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ function getHandlerData(
433433
if (isHookGesture(componentOrGesture)) {
434434
return {
435435
handlerType: componentOrGesture.type as HandlerNames,
436-
handlerTag: componentOrGesture.tag,
436+
handlerTag: componentOrGesture.handlerTag,
437437
enabled: maybeUnpackValue(componentOrGesture.config.enabled),
438438
emitEvent: (eventName, args) => {
439439
const { state, oldState, handlerTag, ...rest } = args.nativeEvent;

0 commit comments

Comments
 (0)