aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHannah Methvin <hannahmethvin@gmail.com>2015-10-18 12:36:43 -0400
committerHannah Methvin <hannahmethvin@gmail.com>2015-10-18 12:36:43 -0400
commita1d69208bad175a27c7b50c27fdc10001563cd4d (patch)
treec69626ed468130e03443d6ac32d856b54fd31a2e
parentac81e39237781f72670f19b52eacceada48f76ef (diff)
downloadjquery-ui-a1d69208bad175a27c7b50c27fdc10001563cd4d.tar.gz
jquery-ui-a1d69208bad175a27c7b50c27fdc10001563cd4d.zip
Mouse: Don't stop propagation of mouseup
Fixes #10818
-rw-r--r--tests/unit/draggable/core.js17
-rw-r--r--ui/widgets/draggable.js4
-rw-r--r--ui/widgets/mouse.js2
3 files changed, 20 insertions, 3 deletions
diff --git a/tests/unit/draggable/core.js b/tests/unit/draggable/core.js
index 8bc751e0e..9efe9d3f1 100644
--- a/tests/unit/draggable/core.js
+++ b/tests/unit/draggable/core.js
@@ -345,4 +345,21 @@ test( "ui-draggable-handle managed correctly in nested draggables", function( as
assert.hasClasses( child, "ui-draggable-handle", "child retains class name on destroy" );
} );
+test( "does not stop propagation to window", function( assert ) {
+ expect( 1 );
+ var element = $( "#draggable1" ).draggable();
+
+ var handler = function() {
+ assert.ok( true, "mouseup propagates to window" );
+ };
+ $( window ).on( "mouseup", handler );
+
+ element.simulate( "drag", {
+ dx: 10,
+ dy: 10
+ } );
+
+ $( window ).off( "mouseup", handler );
+} );
+
} );
diff --git a/ui/widgets/draggable.js b/ui/widgets/draggable.js
index f61c38ce0..b459afe00 100644
--- a/ui/widgets/draggable.js
+++ b/ui/widgets/draggable.js
@@ -255,7 +255,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
if ( !noPropagation ) {
var ui = this._uiHash();
if ( this._trigger( "drag", event, ui ) === false ) {
- this._mouseUp( {} );
+ this._mouseUp( new $.Event( "mouseup", event ) );
return false;
}
this.position = ui.position;
@@ -322,7 +322,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
cancel: function() {
if ( this.helper.is( ".ui-draggable-dragging" ) ) {
- this._mouseUp( {} );
+ this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
} else {
this._clear();
}
diff --git a/ui/widgets/mouse.js b/ui/widgets/mouse.js
index 938d0f4b7..1d8458b27 100644
--- a/ui/widgets/mouse.js
+++ b/ui/widgets/mouse.js
@@ -189,7 +189,7 @@ return $.widget( "ui.mouse", {
}
mouseHandled = false;
- return false;
+ event.preventDefault();
},
_mouseDistanceMet: function( event ) {