Skip to content
This repository was archived by the owner on Oct 8, 2021. It is now read-only.

Commit a6aef45

Browse files
author
Gabriel Schulhof
committed
Swipe: Do not process move if its default is prevented
(cherry picked from commit 0920b15) Closes gh-7585 Fixes gh-7573
1 parent e23d56d commit a6aef45

File tree

3 files changed

+115
-1
lines changed

3 files changed

+115
-1
lines changed

js/events/touch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ define( [ "jquery", "../jquery.mobile.vmouse", "../jquery.mobile.support.touch"
250250
emitted = false;
251251

252252
context.move = function( event ) {
253-
if ( !start ) {
253+
if ( !start || event.isDefaultPrevented() ) {
254254
return;
255255
}
256256

tests/unit/event/swipe-tests.html

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>jQuery Mobile Event Test Suite</title>
7+
8+
<script src="../../../external/requirejs/require.js"></script>
9+
<script src="../../../js/requirejs.config.js"></script>
10+
<script src="../../../js/jquery.tag.inserter.js"></script>
11+
<script src="../../jquery.setNameSpace.js"></script>
12+
<script src="../../../tests/jquery.testHelper.js"></script>
13+
<script type="text/javascript">
14+
$.testHelper.setPushState();
15+
</script>
16+
17+
<link rel="stylesheet" href="../../../css/themes/default/jquery.mobile.css"/>
18+
<link rel="stylesheet" href="../../../external/qunit/qunit.css"/>
19+
<link rel="stylesheet" href="../../jqm-tests.css"/>
20+
21+
<script src="../../../external/qunit/qunit.js"></script>
22+
23+
<script>
24+
$.testHelper.asyncLoad([
25+
[
26+
"events/touch",
27+
],
28+
[
29+
"swipe_core.js"
30+
]
31+
]);
32+
</script>
33+
34+
<script src="../../swarminject.js"></script>
35+
</head>
36+
<body>
37+
38+
<div id="qunit"></div>
39+
40+
</body>
41+
</html>

tests/unit/event/swipe_core.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
asyncTest( "Swipe does not trigger when motion is default-prevented", function() {
2+
var target = $( "#qunit" ),
3+
swipeTriggered = false,
4+
pointer = $.mobile.support.touch ?
5+
{ down: "touchstart", move: "touchmove", up: "touchend" } :
6+
{ down: "mousedown", move: "mousemove", up: "mouseup" };
7+
recordSwipe = function() {
8+
swipeTriggered = true;
9+
};
10+
11+
target.one( "swipe", recordSwipe );
12+
13+
$.testHelper.sequence([
14+
function() {
15+
target.trigger( $.extend( $.Event( pointer.down ), {
16+
originalEvent: {
17+
touches: false
18+
},
19+
pageX: 206,
20+
pageY: 190,
21+
clientX: 206,
22+
clientY: 190
23+
}));
24+
},
25+
function() {
26+
target.trigger( ( function( event ) {
27+
event.preventDefault();
28+
return event;
29+
} )( $.extend( $.Event( pointer.move ), {
30+
originalEvent: {
31+
touches: false
32+
},
33+
pageX: 206,
34+
pageY: 190,
35+
clientX: 206,
36+
clientY: 190
37+
})));
38+
},
39+
function() {
40+
target.trigger( ( function( event ) {
41+
event.preventDefault();
42+
return event;
43+
} )( $.extend( $.Event( pointer.move ), {
44+
originalEvent: {
45+
touches: false
46+
},
47+
pageX: 170,
48+
pageY: 190,
49+
clientX: 170,
50+
clientY: 190
51+
})));
52+
},
53+
function() {
54+
target.trigger( ( function( event ) {
55+
event.preventDefault();
56+
return event;
57+
} )( $.extend( $.Event( pointer.up ), {
58+
originalEvent: {
59+
touches: false
60+
},
61+
pageX: 170,
62+
pageY: 190,
63+
clientX: 170,
64+
clientY: 190
65+
})));
66+
},
67+
function() {
68+
deepEqual( swipeTriggered, false, "Swipe was not triggered" );
69+
target.off( "swipe", recordSwipe );
70+
start();
71+
}
72+
], 100 );
73+
});

0 commit comments

Comments
 (0)