diff options
author | Mike Sherov <mike.sherov@gmail.com> | 2014-08-19 15:09:28 -0400 |
---|---|---|
committer | Mike Sherov <mike.sherov@gmail.com> | 2014-08-20 11:19:36 -0400 |
commit | e12e3e12b19e226b90e4a0ec3848e400a80c8267 (patch) | |
tree | 24d87306fc7d3c7c051e84ec9eb185b0d3d9cbf7 /tests | |
parent | 233f08e07fc451cff46dff22ba69420ceac72255 (diff) | |
download | jquery-ui-e12e3e12b19e226b90e4a0ec3848e400a80c8267.tar.gz jquery-ui-e12e3e12b19e226b90e4a0ec3848e400a80c8267.zip |
Mouse: Only detect out of document mouseups after a mousemove
This prevents the firing of mouseup in the case of IE<9, which will
fire a mousemove event if content is placed under the cursor on
mousedown.
Fixes #7778
Diffstat (limited to 'tests')
-rw-r--r-- | tests/jquery.simulate.js | 2 | ||||
-rw-r--r-- | tests/unit/draggable/draggable_core.js | 17 | ||||
-rw-r--r-- | tests/visual/draggable/replaced.html | 38 | ||||
-rw-r--r-- | tests/visual/index.html | 5 |
4 files changed, 61 insertions, 1 deletions
diff --git a/tests/jquery.simulate.js b/tests/jquery.simulate.js index 1dd96ac3a..28e8a103b 100644 --- a/tests/jquery.simulate.js +++ b/tests/jquery.simulate.js @@ -144,7 +144,7 @@ $.extend( $.simulate.prototype, { 0: 1, 1: 4, 2: 2 - }[ event.button ] || event.button; + }[ event.button ] || ( event.button === -1 ? 0 : event.button ); } return event; diff --git a/tests/unit/draggable/draggable_core.js b/tests/unit/draggable/draggable_core.js index 8bc48f14c..4ea5e608a 100644 --- a/tests/unit/draggable/draggable_core.js +++ b/tests/unit/draggable/draggable_core.js @@ -111,6 +111,23 @@ test( "#8269: Removing draggable element on drop", function() { } }); +// http://bugs.jqueryui.com/ticket/7778 +// drag element breaks in IE8 when its content is replaced onmousedown +test( "Stray mousemove after mousedown still drags", function() { + expect( 2 ); + + var element = $( "#draggable1" ).draggable({ scroll: false }); + + // In IE8, when content is placed under the mouse (e.g. when draggable content is replaced + // on mousedown), mousemove is triggered on those elements even though the mouse hasn't moved. + // Support: IE <9 + element.bind( "mousedown", function() { + $( document ).simulate( "mousemove", { button: -1 }); + }); + + TestHelpers.draggable.shouldMove( element, "element is draggable" ); +}); + test( "#6258: not following mouse when scrolled and using overflow-y: scroll", function() { expect( 2 ); diff --git a/tests/visual/draggable/replaced.html b/tests/visual/draggable/replaced.html new file mode 100644 index 000000000..9b5471694 --- /dev/null +++ b/tests/visual/draggable/replaced.html @@ -0,0 +1,38 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>Draggable Visual Test</title> + <link rel="stylesheet" href="../../../themes/base/all.css"> + <script src="../../../external/jquery/jquery.js"></script> + <script src="../../../ui/core.js"></script> + <script src="../../../ui/widget.js"></script> + <script src="../../../ui/mouse.js"></script> + <script src="../../../ui/draggable.js"></script> + <script> + $(function() { + $( "#draggable" ) + .draggable() + .bind( "mousedown", function() { + $( this ).html( "<div>replaced</div>" ); + }); + }); + </script> + + <style> + #draggable { + background: green; + height: 75px; + width: 75px; + } + </style> +</head> +<body> + +<p>WHAT: A draggable, whose content is replaced onmousedown.</p> +<p>EXPECTED: In IE8, the draggable can actually be dragged.</p> + +<div id="draggable"><div>content</div></div> + +</body> +</html> diff --git a/tests/visual/index.html b/tests/visual/index.html index 949fb7e82..736ba3117 100644 --- a/tests/visual/index.html +++ b/tests/visual/index.html @@ -40,6 +40,11 @@ <li><a href="dialog/stacking.html">Overlapping dialogs</a></li> </ul> + <h2>Draggable</h2> + <ul> + <li><a href="draggable/replaced.html">Replaced Content On Mousedown</a></li> + </ul> + <h2>Effects</h2> <ul> <li><a href="effects/all.html">All</a></li> |