From: Mike Sherov Date: Wed, 13 Aug 2014 23:36:07 +0000 (-0400) Subject: Droppable: Account for draggable margins when detecting hover X-Git-Tag: 1.11.2~56 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4dad6bb99dae280108338c040d016f795d0da328;p=jquery-ui.git Droppable: Account for draggable margins when detecting hover Fixes #6876 --- diff --git a/tests/unit/droppable/droppable_options.js b/tests/unit/droppable/droppable_options.js index 9bfa25881..047858abf 100644 --- a/tests/unit/droppable/droppable_options.js +++ b/tests/unit/droppable/droppable_options.js @@ -89,11 +89,60 @@ test( "hoverClass", function() { test( "tolerance, fit", function() { ok(false, 'missing test - untested code is broken code'); }); +*/ test( "tolerance, intersect", function() { - ok(false, 'missing test - untested code is broken code'); + expect( 2 ); + + var draggable, droppable, + dataset = [ + [ 0, 0, false, "too far up and left" ], + [ 6, 0, false, "too far up" ], + [ 0, 6, false, "too far left" ], + [ 6, 6, true, "top left corner" ], + [ 14, 14, true, "bottom right corner" ], + [ 15, 6, false, "too far right" ], + [ 6, 15, false, "too far down" ], + [ 15, 15, false, "too far down and right" ] + ]; + + draggable = $( "
" ) + .appendTo( "#qunit-fixture" ) + .css({ + width: 10, + height: 10, + position: "absolute", + + // http://bugs.jqueryui.com/ticket/6876 + // Droppable: droppable region is offset by draggables margin + marginTop: 3, + marginLeft: 3 + }) + .draggable(); + + droppable = $( "
" ) + .appendTo( "#qunit-fixture" ) + .css({ width: 10, height: 10, position: "absolute", top: 13, left: 13 }) + .droppable({ tolerance: "intersect" }); + + $.each( dataset, function() { + var data = this; + + draggable.css({ + top: 0, + left: 0 + }); + + droppable.unbind( "drop" ).bind( "drop", function() { + equal( true, data[ 2 ], data[ 3 ] ); + }); + + $( draggable ).simulate( "drag", { + dx: data[ 0 ], + dy: data[ 1 ] + }); + }); }); -*/ test( "tolerance, pointer", function() { expect( 3 ); diff --git a/ui/droppable.js b/ui/droppable.js index fce8d9bd9..e889d89cd 100644 --- a/ui/droppable.js +++ b/ui/droppable.js @@ -235,8 +235,8 @@ $.ui.intersect = (function() { return false; } - var x1 = ( draggable.positionAbs || draggable.position.absolute ).left, - y1 = ( draggable.positionAbs || draggable.position.absolute ).top, + var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left, + y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top, x2 = x1 + draggable.helperProportions.width, y2 = y1 + draggable.helperProportions.height, l = droppable.offset.left,