From 05d16c61508b6ae0ad454a94649a0555290843e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Mon, 23 Jul 2018 16:45:47 +0200 Subject: [PATCH 1/7] Fix race conditions for Android Support SDK 27 --- .../RNBottomSheetBehavior.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java b/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java index 1158876..8df7d33 100644 --- a/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java +++ b/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java @@ -189,9 +189,14 @@ public boolean onLayoutChild( CoordinatorLayout parent, V child, int layoutDirec toggleHeaderColor(false); ViewCompat.offsetTopAndBottom(child, mMaxOffset); } + + /** + * Workaround for support SDK 27 race condition + */ if ( mViewDragHelper == null ) { mViewDragHelper = ViewDragHelper.create( parent, mDragCallback ); } + mViewRef = new WeakReference<>(child); mNestedScrollingChildRef = new WeakReference<>( findScrollingChild( child ) ); return true; @@ -219,6 +224,7 @@ public boolean onInterceptTouchEvent( CoordinatorLayout parent, V child, MotionE return false; } break; + case MotionEvent.ACTION_DOWN: int initialX = (int) event.getX(); mInitialY = (int) event.getY(); @@ -235,6 +241,7 @@ public boolean onInterceptTouchEvent( CoordinatorLayout parent, V child, MotionE mIgnoreEvents = mActivePointerId == MotionEvent.INVALID_POINTER_ID && !parent.isPointInChildBounds(child, initialX, mInitialY); break; + case MotionEvent.ACTION_MOVE: break; } @@ -243,7 +250,14 @@ public boolean onInterceptTouchEvent( CoordinatorLayout parent, V child, MotionE // We don't want to trigger a BottomSheet fling as a result of a Cancel MotionEvent (e.g., parent horizontal scroll view taking over touch events) mScrollVelocityTracker.clear(); } - + + /** + * Workaround for Support SDK 27 race condition + */ + if ( mViewDragHelper == null ) { + mViewDragHelper = ViewDragHelper.create( parent, mDragCallback ); + } + if ( ! mIgnoreEvents && mViewDragHelper.shouldInterceptTouchEvent( event ) ) { return true; } From cf598b8158062fe875234b5ee8a1c1ac9e8fc808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Fri, 27 Jul 2018 15:14:11 +0200 Subject: [PATCH 2/7] Fix race conditions for Support SDK 27 New stab at fixing it. --- .../RNBottomSheetBehavior.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java b/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java index 8df7d33..e29313e 100644 --- a/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java +++ b/android/src/main/java/com/bottomsheetbehavior/RNBottomSheetBehavior.java @@ -208,6 +208,13 @@ public boolean onInterceptTouchEvent( CoordinatorLayout parent, V child, MotionE return false; } + /** + * Workaround for Support SDK 27 race condition. We'll wait until mViewDragHelper is available + */ + if ( mViewDragHelper == null ) { + return false; + } + int action = MotionEventCompat.getActionMasked( event ); if ( action == MotionEvent.ACTION_DOWN ) { reset(); @@ -250,14 +257,7 @@ public boolean onInterceptTouchEvent( CoordinatorLayout parent, V child, MotionE // We don't want to trigger a BottomSheet fling as a result of a Cancel MotionEvent (e.g., parent horizontal scroll view taking over touch events) mScrollVelocityTracker.clear(); } - - /** - * Workaround for Support SDK 27 race condition - */ - if ( mViewDragHelper == null ) { - mViewDragHelper = ViewDragHelper.create( parent, mDragCallback ); - } - + if ( ! mIgnoreEvents && mViewDragHelper.shouldInterceptTouchEvent( event ) ) { return true; } From 58808ee4e935b64df8bc7e0237113d4125a8dc74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Tue, 27 Nov 2018 17:17:07 +0100 Subject: [PATCH 3/7] Update build.gradle --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 5ea0ed3..f1542cf 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -33,6 +33,6 @@ allprojects { dependencies { compile "com.facebook.react:react-native:+" - compile "com.android.support:appcompat-v7:26.1.0" + compile "com.android.support:appcompat-v7:27.1.0" compile 'com.android.support:design:26.1.0' } From 6388d8c6fe98da533bd5ab6e3e802c0bd89f9940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Tue, 27 Nov 2018 18:06:27 +0100 Subject: [PATCH 4/7] Update build.gradle --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index f1542cf..b4ffcca 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -33,6 +33,6 @@ allprojects { dependencies { compile "com.facebook.react:react-native:+" - compile "com.android.support:appcompat-v7:27.1.0" + compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion" compile 'com.android.support:design:26.1.0' } From 6ecc29f1525dcfbf5cdb2357c2c52560435da922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Tue, 27 Nov 2018 18:30:23 +0100 Subject: [PATCH 5/7] Update build.gradle --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index b4ffcca..640497b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,5 +34,5 @@ allprojects { dependencies { compile "com.facebook.react:react-native:+" compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion" - compile 'com.android.support:design:26.1.0' + compile 'com.android.support:design:$rootProject.supportLibVersion' } From 8284885c4c4272668a11a7fe6c5ab2a11ba6d159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Wed, 28 Nov 2018 14:13:16 +0100 Subject: [PATCH 6/7] Update build.gradle --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 640497b..d42fc3c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,5 +34,5 @@ allprojects { dependencies { compile "com.facebook.react:react-native:+" compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion" - compile 'com.android.support:design:$rootProject.supportLibVersion' + compile "com.android.support:design:$rootProject.supportLibVersion" } From c8500966d4f71f24bd3201019b79bb19e4e73e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20Fallr=C3=B8?= Date: Wed, 28 Nov 2018 20:24:01 +0100 Subject: [PATCH 7/7] Update build.gradle --- android/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index d42fc3c..5b201d4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -33,6 +33,6 @@ allprojects { dependencies { compile "com.facebook.react:react-native:+" - compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion" - compile "com.android.support:design:$rootProject.supportLibVersion" + compile "com.android.support:appcompat-v7:27.1.1" + compile "com.android.support:design:27.1.1" }