aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMike Sherov <mike.sherov@gmail.com>2014-08-19 15:09:28 -0400
committerMike Sherov <mike.sherov@gmail.com>2014-08-20 11:19:36 -0400
commite12e3e12b19e226b90e4a0ec3848e400a80c8267 (patch)
tree24d87306fc7d3c7c051e84ec9eb185b0d3d9cbf7 /tests
parent233f08e07fc451cff46dff22ba69420ceac72255 (diff)
downloadjquery-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.js2
-rw-r--r--tests/unit/draggable/draggable_core.js17
-rw-r--r--tests/visual/draggable/replaced.html38
-rw-r--r--tests/visual/index.html5
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>