@@ -132,7 +132,7 @@ export abstract class Handler<T extends com.swmansion.gesturehandler.GestureHand
132132 nativegetterName : 'getHitSlop' ,
133133 converter : {
134134 toNative ( value ) {
135- const HIT_SLOP_NONE = com . swmansion . gesturehandler . GestureHandler . HIT_SLOP_NONE ;
135+ const HIT_SLOP_NONE = GestureHandler . HIT_SLOP_NONE ;
136136 if ( typeof value === 'number' ) {
137137 const hitSlop = layout . toDevicePixels ( value ) ;
138138 return [ hitSlop , hitSlop , hitSlop , hitSlop , HIT_SLOP_NONE , HIT_SLOP_NONE ] ;
@@ -180,6 +180,7 @@ export abstract class Handler<T extends com.swmansion.gesturehandler.GestureHand
180180 shouldStartGesture : ( arg ) => boolean ;
181181 manager : WeakRef < Manager > ;
182182 touchListener : com . swmansion . gesturehandler . OnTouchEventListener < T > ;
183+ nativeGetterKey = 'nativeView' ;
183184
184185 getExtraData ( handler : T ) {
185186 const numberOfPointers = handler . getNumberOfPointers ( ) ;
@@ -276,7 +277,10 @@ export abstract class Handler<T extends com.swmansion.gesturehandler.GestureHand
276277 this . manager . get ( ) . attachGestureHandler ( this , view ) ;
277278 }
278279 detachFromView ( view ?: View ) {
279- if ( view && view !== this . attachedView ) {
280+ if ( ( view && view !== this . attachedView ) || ! this . attachedView ) {
281+ return ;
282+ }
283+ if ( ! this . attachedView ) {
280284 return ;
281285 }
282286 this . manager . get ( ) . detachGestureHandler ( this , this . attachedView ) ;
@@ -347,6 +351,10 @@ export class PinchGestureHandler extends Handler<com.swmansion.gesturehandler.Pi
347351 }
348352 getExtraData ( handler : com . swmansion . gesturehandler . PinchGestureHandler ) {
349353 return Object . assign ( super . getExtraData ( handler ) , {
354+ x : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionX ( ) ) ,
355+ y : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionY ( ) ) ,
356+ absoluteX : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionX ( ) ) ,
357+ absoluteY : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionY ( ) ) ,
350358 scale : handler . getScale ( ) ,
351359 focalX : layout . toDeviceIndependentPixels ( handler . getFocalPointX ( ) ) ,
352360 focalY : layout . toDeviceIndependentPixels ( handler . getFocalPointY ( ) ) ,
@@ -355,20 +363,21 @@ export class PinchGestureHandler extends Handler<com.swmansion.gesturehandler.Pi
355363 }
356364}
357365
366+ const GestureHandler = com . swmansion . gesturehandler . GestureHandler ;
358367export enum FlingDirection {
359- DIRECTION_LEFT = com . swmansion . gesturehandler . GestureHandler . DIRECTION_LEFT ,
360- DIRECTION_UP = com . swmansion . gesturehandler . GestureHandler . DIRECTION_UP ,
361- DIRECTION_DOWN = com . swmansion . gesturehandler . GestureHandler . DIRECTION_DOWN ,
362- DIRECTION_RIGHT = com . swmansion . gesturehandler . GestureHandler . DIRECTION_RIGHT ,
368+ DIRECTION_LEFT = GestureHandler . DIRECTION_LEFT ,
369+ DIRECTION_UP = GestureHandler . DIRECTION_UP ,
370+ DIRECTION_DOWN = GestureHandler . DIRECTION_DOWN ,
371+ DIRECTION_RIGHT = GestureHandler . DIRECTION_RIGHT ,
363372}
364373
365374function directionToString ( direction : number ) {
366375 switch ( direction ) {
367- case com . swmansion . gesturehandler . GestureHandler . DIRECTION_RIGHT :
376+ case GestureHandler . DIRECTION_RIGHT :
368377 return 'right' ;
369- case com . swmansion . gesturehandler . GestureHandler . DIRECTION_UP :
378+ case GestureHandler . DIRECTION_UP :
370379 return 'up' ;
371- case com . swmansion . gesturehandler . GestureHandler . DIRECTION_DOWN :
380+ case GestureHandler . DIRECTION_DOWN :
372381 return 'down' ;
373382 default :
374383 return 'left' ;
@@ -378,13 +387,13 @@ function directionToString(direction: number) {
378387function directionFromString ( direction : string ) {
379388 switch ( direction ) {
380389 case 'right' :
381- return com . swmansion . gesturehandler . GestureHandler . DIRECTION_RIGHT ;
390+ return GestureHandler . DIRECTION_RIGHT ;
382391 case 'up' :
383- return com . swmansion . gesturehandler . GestureHandler . DIRECTION_UP ;
392+ return GestureHandler . DIRECTION_UP ;
384393 case 'down' :
385- return com . swmansion . gesturehandler . GestureHandler . DIRECTION_DOWN ;
394+ return GestureHandler . DIRECTION_DOWN ;
386395 default :
387- return com . swmansion . gesturehandler . GestureHandler . DIRECTION_LEFT ;
396+ return GestureHandler . DIRECTION_LEFT ;
388397 }
389398}
390399
@@ -407,21 +416,25 @@ export class LongPressGestureHandler extends Handler<com.swmansion.gesturehandle
407416 const context = Application . android . context as android . content . Context ;
408417 return new com . swmansion . gesturehandler . LongPressGestureHandler ( context ) ;
409418 }
410- // getExtraData(handler: com.swmansion.gesturehandler.LongPressGestureHandler) {
411- // return Object.assign(super.getExtraData(handler), {
412- // x: layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
413- // y: layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
414- // absoluteX: layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
415- // absoluteY: layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY())
416- // });
417- // }
419+ getExtraData ( handler : com . swmansion . gesturehandler . LongPressGestureHandler ) {
420+ return Object . assign ( super . getExtraData ( handler ) , {
421+ x : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionX ( ) ) ,
422+ y : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionY ( ) ) ,
423+ absoluteX : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionX ( ) ) ,
424+ absoluteY : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionY ( ) ) ,
425+ } ) ;
426+ }
418427}
419428export class RotationGestureHandler extends Handler < com . swmansion . gesturehandler . RotationGestureHandler , RotationGestureHandlerOptions > {
420429 createNative ( options ) {
421430 return new com . swmansion . gesturehandler . RotationGestureHandler ( ) ;
422431 }
423432 getExtraData ( handler : com . swmansion . gesturehandler . RotationGestureHandler ) {
424433 return Object . assign ( super . getExtraData ( handler ) , {
434+ x : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionX ( ) ) ,
435+ y : layout . toDeviceIndependentPixels ( handler . getLastRelativePositionY ( ) ) ,
436+ absoluteX : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionX ( ) ) ,
437+ absoluteY : layout . toDeviceIndependentPixels ( handler . getLastAbsolutePositionY ( ) ) ,
425438 rotation : handler . getRotation ( ) ,
426439 anchorX : layout . toDeviceIndependentPixels ( handler . getAnchorX ( ) ) ,
427440 anchorY : layout . toDeviceIndependentPixels ( handler . getAnchorY ( ) ) ,
@@ -502,7 +515,7 @@ export class Manager extends ManagerBase {
502515 const registry = page . registry ;
503516 if ( registry ) {
504517 registry . registerHandler ( nHandler ) ;
505- registry . attachHandlerToView ( nHandler . getTag ( ) , view . nativeView ) ;
518+ registry . attachHandlerToView ( nHandler . getTag ( ) , view [ handler . nativeGetterKey ] ) ;
506519 }
507520 } else {
508521 throw new Error ( 'a page is needed to attach a gesture' ) ;
0 commit comments