@@ -118,14 +118,14 @@ const DEFAULT_PRESS_RETENTION_OFFSET = {
118118} ;
119119
120120const targetEventTypes = [
121- { name : 'click' , passive : false } ,
122121 { name : 'keydown' , passive : false } ,
123122 { name : 'contextmenu' , passive : false } ,
124123 // We need to preventDefault on pointerdown for mouse/pen events
125124 // that are in hit target area but not the element area.
126125 { name : 'pointerdown' , passive : false } ,
127126] ;
128127const rootEventTypes = [
128+ { name : 'click' , passive : false } ,
129129 'keyup' ,
130130 'pointerup' ,
131131 'pointermove' ,
@@ -422,11 +422,9 @@ function dispatchCancel(
422422) : void {
423423 if ( state . isPressed ) {
424424 state . ignoreEmulatedMouseEvents = false ;
425- removeRootEventTypes ( context , state ) ;
426425 dispatchPressEndEvents ( event , context , props , state ) ;
427- } else if ( state . allowPressReentry ) {
428- removeRootEventTypes ( context , state ) ;
429426 }
427+ removeRootEventTypes ( context , state ) ;
430428}
431429
432430function isValidKeyboardEvent ( nativeEvent : Object ) : boolean {
@@ -609,7 +607,7 @@ const PressResponder = {
609607 props : PressProps ,
610608 state : PressState ,
611609 ) : void {
612- const { target , type} = event ;
610+ const { type} = event ;
613611
614612 if ( props . disabled ) {
615613 removeRootEventTypes ( context , state ) ;
@@ -652,6 +650,7 @@ const PressResponder = {
652650 context . isEventWithinTouchHitTarget ( event )
653651 ) {
654652 // We need to prevent the native event to block the focus
653+ removeRootEventTypes ( context , state ) ;
655654 nativeEvent . preventDefault ( ) ;
656655 return ;
657656 }
@@ -710,29 +709,6 @@ const PressResponder = {
710709 }
711710 break ;
712711 }
713-
714- case 'click' : {
715- if ( context . isTargetWithinHostComponent ( target , 'a' , true ) ) {
716- const {
717- altKey,
718- ctrlKey,
719- metaKey,
720- shiftKey,
721- } = ( nativeEvent : MouseEvent ) ;
722- // Check "open in new window/tab" and "open context menu" key modifiers
723- const preventDefault = props . preventDefault ;
724- if (
725- preventDefault !== false &&
726- ! shiftKey &&
727- ! metaKey &&
728- ! ctrlKey &&
729- ! altKey
730- ) {
731- nativeEvent . preventDefault ( ) ;
732- }
733- }
734- break ;
735- }
736712 }
737713 } ,
738714 onRootEvent (
@@ -807,9 +783,6 @@ const PressResponder = {
807783 dispatchPressStartEvents ( event , context , props , state ) ;
808784 }
809785 } else {
810- if ( ! state . allowPressReentry ) {
811- removeRootEventTypes ( context , state ) ;
812- }
813786 dispatchPressEndEvents ( event , context , props , state ) ;
814787 }
815788 }
@@ -851,7 +824,6 @@ const PressResponder = {
851824 }
852825
853826 const wasLongPressed = state . isLongPressed ;
854- removeRootEventTypes ( context , state ) ;
855827 dispatchPressEndEvents ( event , context , props , state ) ;
856828
857829 if ( state . pressTarget !== null && props . onPress ) {
@@ -874,10 +846,35 @@ const PressResponder = {
874846 }
875847 }
876848 }
877- } else if ( type === 'mouseup' && state . ignoreEmulatedMouseEvents ) {
849+ } else if ( type === 'mouseup' ) {
878850 state . ignoreEmulatedMouseEvents = false ;
879- } else if ( state . allowPressReentry ) {
880- removeRootEventTypes ( context , state ) ;
851+ }
852+ break ;
853+ }
854+
855+ case 'click' : {
856+ removeRootEventTypes ( context , state ) ;
857+ if (
858+ context . isTargetWithinEventComponent ( target ) &&
859+ context . isTargetWithinHostComponent ( target , 'a' , true )
860+ ) {
861+ const {
862+ altKey,
863+ ctrlKey,
864+ metaKey,
865+ shiftKey,
866+ } = ( nativeEvent : MouseEvent ) ;
867+ // Check "open in new window/tab" and "open context menu" key modifiers
868+ const preventDefault = props . preventDefault ;
869+ if (
870+ preventDefault !== false &&
871+ ! shiftKey &&
872+ ! metaKey &&
873+ ! ctrlKey &&
874+ ! altKey
875+ ) {
876+ nativeEvent . preventDefault ( ) ;
877+ }
881878 }
882879 break ;
883880 }
0 commit comments