@@ -120,6 +120,9 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
120
120
121
121
// Events
122
122
function onGestureStart ( e ) {
123
+ if ( e . pointerType === 'mouse' ) {
124
+ evCache . splice ( 0 , evCache . length ) ;
125
+ }
123
126
if ( ! eventWithinSlide ( e ) ) return ;
124
127
const params = swiper . params . zoom ;
125
128
fakeGestureTouched = false ;
@@ -189,11 +192,13 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
189
192
}
190
193
function onGestureEnd ( e ) {
191
194
if ( ! eventWithinSlide ( e ) ) return ;
195
+ if ( e . pointerType === 'mouse' && e . type === 'pointerout' ) return ;
192
196
193
197
const params = swiper . params . zoom ;
194
198
const zoom = swiper . zoom ;
195
199
const pointerIndex = evCache . findIndex ( ( cachedEv ) => cachedEv . pointerId === e . pointerId ) ;
196
200
if ( pointerIndex >= 0 ) evCache . splice ( pointerIndex , 1 ) ;
201
+
197
202
if ( ! fakeGestureTouched || ! fakeGestureMoved ) {
198
203
return ;
199
204
}
@@ -555,7 +560,7 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
555
560
556
561
swiper . wrapperEl . addEventListener ( 'pointerdown' , onGestureStart , passiveListener ) ;
557
562
swiper . wrapperEl . addEventListener ( 'pointermove' , onGestureChange , activeListenerWithCapture ) ;
558
- [ 'pointerup' , 'pointercancel' ] . forEach ( ( eventName ) => {
563
+ [ 'pointerup' , 'pointercancel' , 'pointerout' ] . forEach ( ( eventName ) => {
559
564
swiper . wrapperEl . addEventListener ( eventName , onGestureEnd , passiveListener ) ;
560
565
} ) ;
561
566
@@ -572,7 +577,7 @@ export default function Zoom({ swiper, extendParams, on, emit }) {
572
577
// Scale image
573
578
swiper . wrapperEl . removeEventListener ( 'pointerdown' , onGestureStart , passiveListener ) ;
574
579
swiper . wrapperEl . removeEventListener ( 'pointermove' , onGestureChange , activeListenerWithCapture ) ;
575
- [ 'pointerup' , 'pointercancel' ] . forEach ( ( eventName ) => {
580
+ [ 'pointerup' , 'pointercancel' , 'pointerout' ] . forEach ( ( eventName ) => {
576
581
swiper . wrapperEl . removeEventListener ( eventName , onGestureEnd , passiveListener ) ;
577
582
} ) ;
578
583
0 commit comments