diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt index ce2673feb1..3a61180ec8 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt @@ -8,7 +8,7 @@ import android.view.VelocityTracker import com.facebook.react.bridge.ReadableMap import com.swmansion.gesturehandler.react.eventbuilders.FlingGestureHandlerEventDataBuilder -class FlingGestureHandler : GestureHandler() { +class FlingGestureHandler : GestureHandler() { var numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED var direction = DEFAULT_DIRECTION diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt index a56c31bd35..169c9ae8ef 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt @@ -23,7 +23,7 @@ import com.swmansion.gesturehandler.react.eventbuilders.GestureHandlerEventDataB import java.lang.IllegalStateException import java.util.* -open class GestureHandler> { +open class GestureHandler { private val trackedPointerIDs = IntArray(MAX_POINTERS_COUNT) private var trackedPointersIDsCount = 0 private val windowOffset = IntArray(2) { 0 } @@ -79,20 +79,13 @@ open class GestureHandler Unit): ConcreteGestureHandlerT = self().apply { - block() - } - // properties set and accessed only by the orchestrator var activationIndex = 0 var isActive = false @@ -100,16 +93,16 @@ open class GestureHandler): Boolean { + fun hasCommonPointers(other: GestureHandler): Boolean { for (i in trackedPointerIDs.indices) { if (trackedPointerIDs[i] != -1 && other.trackedPointerIDs[i] != -1) { return true @@ -131,14 +124,7 @@ open class GestureHandler, event: MotionEvent, e: IllegalArgumentException) : + class AdaptEventException(handler: GestureHandler, event: MotionEvent, e: IllegalArgumentException) : Exception( """ handler: ${handler::class.simpleName} @@ -594,7 +579,7 @@ open class GestureHandler 0 - open fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean { + open fun shouldRequireToWaitForFailure(handler: GestureHandler): Boolean { if (handler === this) { return false } @@ -602,7 +587,7 @@ open class GestureHandler): Boolean { + fun shouldWaitForHandlerFailure(handler: GestureHandler): Boolean { if (handler === this) { return false } @@ -610,7 +595,7 @@ open class GestureHandler): Boolean { + open fun shouldRecognizeSimultaneously(handler: GestureHandler): Boolean { if (handler === this) { return true } @@ -618,7 +603,7 @@ open class GestureHandler): Boolean { + open fun shouldBeCancelledBy(handler: GestureHandler): Boolean { if (handler === this) { return false } @@ -714,7 +699,7 @@ open class GestureHandler): Boolean { + fun isDescendantOf(of: GestureHandler): Boolean { var view = this.view?.parent as? View while (view != null) { if (view == of.view) { @@ -831,11 +816,6 @@ open class GestureHandler { - onTouchEventListener = listener - return this - } - override fun toString(): String { val viewString = if (view == null) null else view!!.javaClass.simpleName return this.javaClass.simpleName + "@[" + tag + "]:" + viewString @@ -851,7 +831,7 @@ open class GestureHandler> { + abstract class Factory { abstract val type: Class abstract val name: String @@ -899,7 +879,7 @@ open class GestureHandler, config: ReadableMap) { + private fun handleHitSlopProperty(handler: GestureHandler, config: ReadableMap) { if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) { val hitSlop = PixelUtil.toPixelFromDIP(config.getDouble(KEY_HIT_SLOP)) handler.setHitSlop( diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt index 97f35d0c38..169be84c4c 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt @@ -1,8 +1,8 @@ package com.swmansion.gesturehandler.core interface GestureHandlerInteractionController { - fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean - fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean - fun shouldRecognizeSimultaneously(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean - fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean + fun shouldWaitForHandlerFailure(handler: GestureHandler, otherHandler: GestureHandler): Boolean + fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler, otherHandler: GestureHandler): Boolean + fun shouldRecognizeSimultaneously(handler: GestureHandler, otherHandler: GestureHandler): Boolean + fun shouldHandlerBeCancelledBy(handler: GestureHandler, otherHandler: GestureHandler): Boolean } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt index 198cbf7f35..9d33c02450 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt @@ -20,9 +20,9 @@ class GestureHandlerOrchestrator( * traversing view hierarchy and looking for gesture handlers. */ var minimumAlphaForTraversal = DEFAULT_MIN_ALPHA_FOR_TRAVERSAL - private val gestureHandlers = arrayListOf>() - private val awaitingHandlers = arrayListOf>() - private val preparedHandlers = arrayListOf>() + private val gestureHandlers = arrayListOf() + private val awaitingHandlers = arrayListOf() + private val preparedHandlers = arrayListOf() // In `onHandlerStateChange` method we iterate through `awaitingHandlers`, but calling `tryActivate` may modify this list. // To avoid `ConcurrentModificationException` we iterate through copy. There is one more problem though - if handler was @@ -85,22 +85,20 @@ class GestureHandlerOrchestrator( finishedHandlersCleanupScheduled = false } - private fun hasOtherHandlerToWaitFor(handler: GestureHandler<*>) = gestureHandlers.any { - !isFinished(it.state) && shouldHandlerWaitForOther(handler, it) - } + private fun hasOtherHandlerToWaitFor(handler: GestureHandler) = + gestureHandlers.any { !isFinished(it.state) && shouldHandlerWaitForOther(handler, it) } - private fun shouldBeCancelledByFinishedHandler(handler: GestureHandler<*>) = gestureHandlers.any { - shouldHandlerWaitForOther(handler, it) && it.state == GestureHandler.STATE_END - } + private fun shouldBeCancelledByFinishedHandler(handler: GestureHandler) = + gestureHandlers.any { shouldHandlerWaitForOther(handler, it) && it.state == GestureHandler.STATE_END } - private fun shouldBeCancelledByActiveHandler(handler: GestureHandler<*>) = gestureHandlers.any { + private fun shouldBeCancelledByActiveHandler(handler: GestureHandler) = gestureHandlers.any { handler.hasCommonPointers(it) && it.state == GestureHandler.STATE_ACTIVE && !canRunSimultaneously(handler, it) && handler.isDescendantOf(it) } - private fun tryActivate(handler: GestureHandler<*>) { + private fun tryActivate(handler: GestureHandler) { // If we are waiting for a gesture that has successfully finished, we should cancel handler if (shouldBeCancelledByFinishedHandler(handler) || shouldBeCancelledByActiveHandler(handler)) { handler.cancel() @@ -129,7 +127,7 @@ class GestureHandlerOrchestrator( } /*package*/ - fun onHandlerStateChange(handler: GestureHandler<*>, newState: Int, prevState: Int) { + fun onHandlerStateChange(handler: GestureHandler, newState: Int, prevState: Int) { handlingChangeSemaphore += 1 if (isFinished(newState)) { // We have to loop through copy in order to avoid modifying collection @@ -193,7 +191,7 @@ class GestureHandlerOrchestrator( scheduleFinishedHandlersCleanup() } - private fun makeActive(handler: GestureHandler<*>) { + private fun makeActive(handler: GestureHandler) { val currentState = handler.state with(handler) { isAwaiting = false @@ -270,7 +268,7 @@ class GestureHandlerOrchestrator( } } - private fun deliverEventToGestureHandler(handler: GestureHandler<*>, sourceEvent: MotionEvent) { + private fun deliverEventToGestureHandler(handler: GestureHandler, sourceEvent: MotionEvent) { if (!isViewAttachedUnderWrapper(handler.view)) { handler.cancel() return @@ -424,7 +422,7 @@ class GestureHandlerOrchestrator( return point } - private fun addAwaitingHandler(handler: GestureHandler<*>) { + private fun addAwaitingHandler(handler: GestureHandler) { if (awaitingHandlers.contains(handler)) { return } @@ -438,7 +436,7 @@ class GestureHandlerOrchestrator( } } - private fun recordHandlerIfNotPresent(handler: GestureHandler<*>, view: View) { + private fun recordHandlerIfNotPresent(handler: GestureHandler, view: View) { if (gestureHandlers.contains(handler)) { return } @@ -497,7 +495,7 @@ class GestureHandlerOrchestrator( // There's only one exception - RootViewGestureHandler. TalkBack uses hover events, // so we need to pass them into RootViewGestureHandler, otherwise press and hold // gesture stops working correctly (see https://github.com/software-mansion/react-native-gesture-handler/issues/3407) - private fun shouldHandlerSkipHoverEvents(handler: GestureHandler<*>, action: Int): Boolean { + private fun shouldHandlerSkipHoverEvents(handler: GestureHandler, action: Int): Boolean { val shouldSkipHoverEvents = handler !is HoverGestureHandler && handler !is RNGestureHandlerRootHelper.RootViewGestureHandler @@ -672,7 +670,7 @@ class GestureHandlerOrchestrator( private val matrixTransformCoords = FloatArray(2) private val inverseMatrix = Matrix() private val tempCoords = FloatArray(2) - private val handlersComparator = Comparator> { a, b -> + private val handlersComparator = Comparator { a, b -> return@Comparator if (a.isActive && b.isActive || a.isAwaiting && b.isAwaiting) { // both A and B are either active or awaiting activation, in which case we prefer one that // has activated (or turned into "awaiting" state) earlier @@ -726,17 +724,16 @@ class GestureHandlerOrchestrator( private fun isTransformedTouchPointInView(x: Float, y: Float, child: View) = x in 0f..child.width.toFloat() && y in 0f..child.height.toFloat() - private fun shouldHandlerWaitForOther(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean = - handler !== other && - ( - handler.shouldWaitForHandlerFailure(other) || - other.shouldRequireToWaitForFailure(handler) - ) + private fun shouldHandlerWaitForOther(handler: GestureHandler, other: GestureHandler): Boolean = + handler !== other && ( + handler.shouldWaitForHandlerFailure(other) || + other.shouldRequireToWaitForFailure(handler) + ) - private fun canRunSimultaneously(a: GestureHandler<*>, b: GestureHandler<*>) = + private fun canRunSimultaneously(a: GestureHandler, b: GestureHandler) = a === b || a.shouldRecognizeSimultaneously(b) || b.shouldRecognizeSimultaneously(a) - private fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean { + private fun shouldHandlerBeCancelledBy(handler: GestureHandler, other: GestureHandler): Boolean { if (!handler.hasCommonPointers(other)) { // if two handlers share no common pointer one can never trigger cancel for the other return false diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt index c92862eadd..28ce26588f 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt @@ -4,5 +4,5 @@ import android.view.View import java.util.* interface GestureHandlerRegistry { - fun getHandlersForView(view: View): ArrayList>? + fun getHandlersForView(view: View): ArrayList? } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt index a7153398d1..5b8e8dfc88 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt @@ -10,13 +10,13 @@ import com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper import com.swmansion.gesturehandler.react.RNViewConfigurationHelper import com.swmansion.gesturehandler.react.eventbuilders.HoverGestureHandlerEventDataBuilder -class HoverGestureHandler : GestureHandler() { +class HoverGestureHandler : GestureHandler() { private var handler: Handler? = null private var finishRunnable = Runnable { finish() } var stylusData: StylusData = StylusData() private set - private infix fun isAncestorOf(other: GestureHandler<*>): Boolean { + private infix fun isAncestorOf(other: GestureHandler): Boolean { var current: View? = other.view while (current != null) { @@ -50,7 +50,7 @@ class HoverGestureHandler : GestureHandler() { return null } - override fun shouldBeCancelledBy(handler: GestureHandler<*>): Boolean { + override fun shouldBeCancelledBy(handler: GestureHandler): Boolean { if (handler is HoverGestureHandler && !(handler isAncestorOf this)) { return isViewDisplayedOverAnother(handler.view!!, this.view!!)!! } @@ -58,7 +58,7 @@ class HoverGestureHandler : GestureHandler() { return super.shouldBeCancelledBy(handler) } - override fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean { + override fun shouldRequireToWaitForFailure(handler: GestureHandler): Boolean { if (handler is HoverGestureHandler) { if (!(this isAncestorOf handler) && !(handler isAncestorOf this)) { isViewDisplayedOverAnother(this.view!!, handler.view!!)?.let { @@ -70,10 +70,8 @@ class HoverGestureHandler : GestureHandler() { return super.shouldRequireToWaitForFailure(handler) } - override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean { - if (handler is HoverGestureHandler && - (this isAncestorOf handler || handler isAncestorOf this) - ) { + override fun shouldRecognizeSimultaneously(handler: GestureHandler): Boolean { + if (handler is HoverGestureHandler && (this isAncestorOf handler || handler isAncestorOf this)) { return true } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt index d757771068..c249354477 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt @@ -9,7 +9,7 @@ import com.facebook.react.bridge.ReadableMap import com.facebook.react.uimanager.PixelUtil import com.swmansion.gesturehandler.react.eventbuilders.LongPressGestureHandlerEventDataBuilder -class LongPressGestureHandler(context: Context) : GestureHandler() { +class LongPressGestureHandler(context: Context) : GestureHandler() { var minDurationMs = DEFAULT_MIN_DURATION_MS val duration: Int get() = (previousTime - startTime).toInt() diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt index 72cee7c3c9..d3322b691c 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt @@ -4,7 +4,7 @@ import android.content.Context import android.view.MotionEvent import com.swmansion.gesturehandler.react.eventbuilders.ManualGestureHandlerEventDataBuilder -class ManualGestureHandler : GestureHandler() { +class ManualGestureHandler : GestureHandler() { override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { if (state == STATE_UNDETERMINED) { begin() diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt index e4ef135a49..8329224455 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt @@ -18,7 +18,7 @@ import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager import com.swmansion.gesturehandler.react.eventbuilders.NativeGestureHandlerEventDataBuilder import com.swmansion.gesturehandler.react.isScreenReaderOn -class NativeViewGestureHandler : GestureHandler() { +class NativeViewGestureHandler : GestureHandler() { private var shouldActivateOnStart = false /** @@ -42,7 +42,7 @@ class NativeViewGestureHandler : GestureHandler() { shouldCancelWhenOutside = DEFAULT_SHOULD_CANCEL_WHEN_OUTSIDE } - override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean { + override fun shouldRecognizeSimultaneously(handler: GestureHandler): Boolean { // if the gesture is marked by user as simultaneous with other or the hook return true hook.shouldRecognizeSimultaneously(handler)?.let { return@shouldRecognizeSimultaneously it @@ -77,7 +77,7 @@ class NativeViewGestureHandler : GestureHandler() { // otherwise we can only return `true` if already in an active state } - override fun shouldBeCancelledBy(handler: GestureHandler<*>): Boolean = !disallowInterruption + override fun shouldBeCancelledBy(handler: GestureHandler): Boolean = !disallowInterruption override fun onPrepare() { when (val view = view) { @@ -225,7 +225,7 @@ class NativeViewGestureHandler : GestureHandler() { * @return Boolean value signalling whether the gesture can be recognized simultaneously with * other (handler). Returning false doesn't necessarily prevent it from happening. */ - fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean? = null + fun shouldRecognizeSimultaneously(handler: GestureHandler): Boolean? = null /** * shouldActivateOnStart and tryIntercept have priority over this method @@ -253,7 +253,7 @@ class NativeViewGestureHandler : GestureHandler() { } private class TextViewHook : NativeViewGestureHandlerHook { - override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) = false + override fun shouldRecognizeSimultaneously(handler: GestureHandler) = false // We have to explicitly check for ReactTextView, since its `isPressed` flag is not set to `true`, // in contrast to e.g. Touchable @@ -282,7 +282,7 @@ class NativeViewGestureHandler : GestureHandler() { // recognize alongside every handler besides RootViewGestureHandler, which is a private inner class // of RNGestureHandlerRootHelper so no explicit type checks, but its tag is always negative // also if other handler is NativeViewGestureHandler then don't override the default implementation - override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) = + override fun shouldRecognizeSimultaneously(handler: GestureHandler) = handler.tag > 0 && handler !is NativeViewGestureHandler override fun wantsToHandleEventBeforeActivation() = true diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt index 2784d99dd9..ad7bbf6438 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt @@ -3,7 +3,7 @@ package com.swmansion.gesturehandler.core import android.view.MotionEvent interface OnTouchEventListener { - fun > onHandlerUpdate(handler: T, event: MotionEvent) - fun > onStateChange(handler: T, newState: Int, oldState: Int) - fun > onTouchEvent(handler: T) + fun onHandlerUpdate(handler: T, event: MotionEvent) + fun onStateChange(handler: T, newState: Int, oldState: Int) + fun onTouchEvent(handler: T) } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt index aae0cb3d71..33bd963595 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt @@ -12,7 +12,7 @@ import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY import com.swmansion.gesturehandler.react.eventbuilders.PanGestureHandlerEventDataBuilder -class PanGestureHandler(context: Context?) : GestureHandler() { +class PanGestureHandler(context: Context?) : GestureHandler() { var velocityX = 0f private set var velocityY = 0f diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt index b85fedd7eb..1581cfdfaa 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt @@ -7,7 +7,7 @@ import android.view.ViewConfiguration import com.swmansion.gesturehandler.react.eventbuilders.PinchGestureHandlerEventDataBuilder import kotlin.math.abs -class PinchGestureHandler : GestureHandler() { +class PinchGestureHandler : GestureHandler() { var scale = 0.0 private set var velocity = 0.0 diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt index f1b1bad551..2d660f6d4d 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt @@ -7,7 +7,7 @@ import com.swmansion.gesturehandler.core.RotationGestureDetector.OnRotationGestu import com.swmansion.gesturehandler.react.eventbuilders.RotationGestureHandlerEventDataBuilder import kotlin.math.abs -class RotationGestureHandler : GestureHandler() { +class RotationGestureHandler : GestureHandler() { private var rotationGestureDetector: RotationGestureDetector? = null var rotation = 0.0 private set diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt index 951574c583..3a4d828b5b 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt @@ -11,7 +11,7 @@ import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY import com.swmansion.gesturehandler.react.eventbuilders.TapGestureHandlerEventDataBuilder import kotlin.math.abs -class TapGestureHandler : GestureHandler() { +class TapGestureHandler : GestureHandler() { private var maxDeltaX = MAX_VALUE_IGNORE private var maxDeltaY = MAX_VALUE_IGNORE private var maxDist = MAX_VALUE_IGNORE diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt index 6e0a1895d9..a46ab52c75 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt @@ -25,7 +25,7 @@ class RNGestureHandlerEvent private constructor() : Event // how GH sends events (which needs to be done, but maybe wait until the RN's apis stop changing) private var useTopPrefixedName: Boolean = false - private fun > init( + private fun init( handler: T, dataBuilder: GestureHandlerEventDataBuilder, useNativeAnimatedName: Boolean, @@ -60,7 +60,7 @@ class RNGestureHandlerEvent private constructor() : Event private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic private val EVENTS_POOL = Pools.SynchronizedPool(TOUCH_EVENTS_POOL_SIZE) - fun > obtain( + fun obtain( handler: T, dataBuilder: GestureHandlerEventDataBuilder, useTopPrefixedName: Boolean = false, diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDispatcher.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDispatcher.kt index 736bf8fac1..a047c2c8b2 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDispatcher.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDispatcher.kt @@ -14,19 +14,19 @@ class RNGestureHandlerEventDispatcher(private val reactApplicationContext: React OnTouchEventListener { private val reanimatedEventDispatcher = ReanimatedEventDispatcher() - override fun > onHandlerUpdate(handler: T, event: MotionEvent) { + override fun onHandlerUpdate(handler: T, event: MotionEvent) { this.dispatchHandlerUpdateEvent(handler) } - override fun > onStateChange(handler: T, newState: Int, oldState: Int) { + override fun onStateChange(handler: T, newState: Int, oldState: Int) { this.dispatchStateChangeEvent(handler, newState, oldState) } - override fun > onTouchEvent(handler: T) { + override fun onTouchEvent(handler: T) { this.dispatchTouchEvent(handler) } - private fun > dispatchHandlerUpdateEvent(handler: T) { + private fun dispatchHandlerUpdateEvent(handler: T) { // triggers onUpdate and onChange callbacks on the JS side // root containers use negative tags, we don't need to dispatch events for them to the JS @@ -34,7 +34,7 @@ class RNGestureHandlerEventDispatcher(private val reactApplicationContext: React return } - val handlerFactory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return + val handlerFactory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return when (handler.actionType) { GestureHandler.ACTION_TYPE_REANIMATED_WORKLET -> { // Reanimated worklet @@ -77,14 +77,14 @@ class RNGestureHandlerEventDispatcher(private val reactApplicationContext: React } } - private fun > dispatchStateChangeEvent(handler: T, newState: Int, oldState: Int) { + private fun dispatchStateChangeEvent(handler: T, newState: Int, oldState: Int) { // triggers onBegin, onStart, onEnd, onFinalize callbacks on the JS side if (handler.tag < 0) { // root containers use negative tags, we don't need to dispatch events for them to the JS return } - val handlerFactory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return + val handlerFactory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return when (handler.actionType) { GestureHandler.ACTION_TYPE_REANIMATED_WORKLET -> { @@ -128,7 +128,7 @@ class RNGestureHandlerEventDispatcher(private val reactApplicationContext: React } } - private fun > dispatchTouchEvent(handler: T) { + private fun dispatchTouchEvent(handler: T) { // triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side if (handler.tag < 0) { diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerFactoryUtil.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerFactoryUtil.kt index ff83224f7e..7b9a046d65 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerFactoryUtil.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerFactoryUtil.kt @@ -25,10 +25,10 @@ object RNGestureHandlerFactoryUtil { ) @Suppress("UNCHECKED_CAST") - fun > findFactoryForHandler(handler: GestureHandler): GestureHandler.Factory? = - handlerFactories.firstOrNull { it.type == handler.javaClass } as GestureHandler.Factory? + fun findFactoryForHandler(handler: GestureHandler): GestureHandler.Factory? = + handlerFactories.firstOrNull { it.type == handler.javaClass } as GestureHandler.Factory? @Suppress("UNCHECKED_CAST") - fun > findFactoryForName(handlerName: String): GestureHandler.Factory? = - handlerFactories.firstOrNull { it.name == handlerName } as GestureHandler.Factory? + fun findFactoryForName(handlerName: String): GestureHandler.Factory? = + handlerFactories.firstOrNull { it.name == handlerName } as GestureHandler.Factory? } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt index 89b30395d6..cda8bca161 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt @@ -25,7 +25,7 @@ class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { } } - fun configureInteractions(handler: GestureHandler<*>, config: ReadableMap) { + fun configureInteractions(handler: GestureHandler, config: ReadableMap) { handler.setInteractionController(this) if (config.hasKey(KEY_WAIT_FOR)) { val tags = convertHandlerTagsArray(config, KEY_WAIT_FOR) @@ -41,13 +41,13 @@ class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { } } - override fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>) = + override fun shouldWaitForHandlerFailure(handler: GestureHandler, otherHandler: GestureHandler) = waitForRelations[handler.tag]?.any { tag -> tag == otherHandler.tag } ?: false - override fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>) = + override fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler, otherHandler: GestureHandler) = blockingRelations[handler.tag]?.any { tag -> tag == otherHandler.tag } ?: false - override fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean { + override fun shouldHandlerBeCancelledBy(handler: GestureHandler, otherHandler: GestureHandler): Boolean { if (otherHandler is NativeViewGestureHandler) { return otherHandler.disallowInterruption } @@ -58,7 +58,7 @@ class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { return false } - override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>, otherHandler: GestureHandler<*>) = + override fun shouldRecognizeSimultaneously(handler: GestureHandler, otherHandler: GestureHandler) = simultaneousRelations[handler.tag]?.any { tag -> tag == otherHandler.tag } ?: false fun reset() { diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt index ca7bd66d8b..e149fa49fc 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt @@ -27,7 +27,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : override fun getName() = NAME - private fun > createGestureHandlerHelper( + private fun createGestureHandlerHelper( handlerName: String, handlerTag: Int, config: ReadableMap, @@ -42,7 +42,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : ?: throw JSApplicationIllegalArgumentException("Invalid handler name $handlerName") val handler = handlerFactory.create(reactApplicationContext, handlerTag) - handler.setOnTouchEventListener(eventDispatcher) + handler.onTouchEventListener = eventDispatcher registry.registerHandler(handler) interactionManager.configureInteractions(handler, config) handlerFactory.setConfig(handler, config) @@ -52,7 +52,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : override fun createGestureHandler(handlerName: String, handlerTagDouble: Double, config: ReadableMap) { val handlerTag = handlerTagDouble.toInt() - createGestureHandlerHelper(handlerName, handlerTag, config) + createGestureHandlerHelper(handlerName, handlerTag, config) } @ReactMethod @@ -69,10 +69,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : } } - @Suppress("UNCHECKED_CAST") - private fun > updateGestureHandlerHelper(handlerTag: Int, config: ReadableMap) { - val handler = registry.getHandler(handlerTag) as T? ?: return - val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return + private fun updateGestureHandlerHelper(handlerTag: Int, config: ReadableMap) { + val handler = registry.getHandler(handlerTag) ?: return + val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return interactionManager.dropRelationsForHandlerWithTag(handlerTag) interactionManager.configureInteractions(handler, config) factory.setConfig(handler, config) @@ -82,7 +81,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : override fun updateGestureHandler(handlerTagDouble: Double, config: ReadableMap) { val handlerTag = handlerTagDouble.toInt() - updateGestureHandlerHelper(handlerTag, config) + updateGestureHandlerHelper(handlerTag, config) } @ReactMethod diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt index a44f5bd5cb..bfc9c433d6 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt @@ -8,17 +8,17 @@ import com.swmansion.gesturehandler.core.GestureHandlerRegistry import java.util.* class RNGestureHandlerRegistry : GestureHandlerRegistry { - private val handlers = SparseArray>() + private val handlers = SparseArray() private val attachedTo = SparseArray() - private val handlersForView = SparseArray>>() + private val handlersForView = SparseArray>() @Synchronized - fun registerHandler(handler: GestureHandler<*>) { + fun registerHandler(handler: GestureHandler) { handlers.put(handler.tag, handler) } @Synchronized - fun getHandler(handlerTag: Int): GestureHandler<*>? = handlers[handlerTag] + fun getHandler(handlerTag: Int): GestureHandler? = handlers[handlerTag] @Synchronized fun attachHandlerToView(handlerTag: Int, viewTag: Int, actionType: Int): Boolean { @@ -32,7 +32,7 @@ class RNGestureHandlerRegistry : GestureHandlerRegistry { } @Synchronized - private fun registerHandlerForViewWithTag(viewTag: Int, handler: GestureHandler<*>) { + private fun registerHandlerForViewWithTag(viewTag: Int, handler: GestureHandler) { check(attachedTo[handler.tag] == null) { "Handler $handler already attached" } attachedTo.put(handler.tag, viewTag) var listToAdd = handlersForView[viewTag] @@ -48,7 +48,7 @@ class RNGestureHandlerRegistry : GestureHandlerRegistry { } @Synchronized - private fun detachHandler(handler: GestureHandler<*>) { + private fun detachHandler(handler: GestureHandler) { val attachedToView = attachedTo[handler.tag] if (attachedToView != null) { attachedTo.remove(handler.tag) @@ -87,8 +87,8 @@ class RNGestureHandlerRegistry : GestureHandlerRegistry { } @Synchronized - fun getHandlersForViewWithTag(viewTag: Int): ArrayList>? = handlersForView[viewTag] + fun getHandlersForViewWithTag(viewTag: Int): ArrayList? = handlersForView[viewTag] @Synchronized - override fun getHandlersForView(view: View): ArrayList>? = getHandlersForViewWithTag(view.id) + override fun getHandlersForView(view: View): ArrayList? = getHandlersForViewWithTag(view.id) } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt index a16f0cbc56..d8f8fd63c2 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt @@ -16,7 +16,7 @@ import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) { private val orchestrator: GestureHandlerOrchestrator? - private val jsGestureHandler: GestureHandler<*>? + private val jsGestureHandler: GestureHandler? val rootView: ViewGroup private var shouldIntercept = false private var passingTouch = false @@ -59,7 +59,7 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: } } - internal inner class RootViewGestureHandler(handlerTag: Int) : GestureHandler() { + internal inner class RootViewGestureHandler(handlerTag: Int) : GestureHandler() { init { this.tag = handlerTag } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt index f5711178ff..77d5fa7930 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt @@ -19,7 +19,7 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event> init( + private fun init( handler: T, newState: Int, oldState: Int, @@ -56,7 +56,7 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event> obtain( + fun obtain( handler: T, newState: Int, oldState: Int, diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt index 1abb3cd722..69876ecd48 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt @@ -10,7 +10,7 @@ import com.swmansion.gesturehandler.core.GestureHandler class RNGestureHandlerTouchEvent private constructor() : Event() { private var extraData: WritableMap? = null private var coalescingKey: Short = 0 - private fun > init(handler: T) { + private fun init(handler: T) { val view = handler.view!! super.init(UIManagerHelper.getSurfaceId(view), view.id) extraData = createEventData(handler) @@ -42,14 +42,12 @@ class RNGestureHandlerTouchEvent private constructor() : Event> obtain(handler: T): RNGestureHandlerTouchEvent = ( - EVENTS_POOL.acquire() - ?: RNGestureHandlerTouchEvent() - ).apply { - init(handler) - } + fun obtain(handler: T): RNGestureHandlerTouchEvent = + (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply { + init(handler) + } - fun > createEventData(handler: T): WritableMap = Arguments.createMap().apply { + fun createEventData(handler: T): WritableMap = Arguments.createMap().apply { putInt("handlerTag", handler.tag) putInt("state", handler.state) putInt("numberOfTouches", handler.trackedPointersCount) diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt index 83217dc462..ba87c07acb 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt @@ -3,7 +3,7 @@ package com.swmansion.gesturehandler.react.eventbuilders import com.facebook.react.bridge.WritableMap import com.swmansion.gesturehandler.core.GestureHandler -abstract class GestureHandlerEventDataBuilder>(handler: T) { +abstract class GestureHandlerEventDataBuilder(handler: T) { private val numberOfPointers: Int private val handlerTag: Int private val state: Int