From 9ac505b9fa747a24e5c329cde0614ec0fe49d807 Mon Sep 17 00:00:00 2001 From: Jason Moon Date: Thu, 21 Mar 2013 09:56:39 -0500 Subject: [PATCH] Sortable: update placeholder when axis is x or y for connected lists. Fixed #8301 - Placeholder doesn't move when using connectWith option (cherry picked from commit f306a826a4d3b4c36c3f86cb5feeee23bb0db4c3) --- tests/unit/sortable/sortable_options.js | 28 +++++++++++++++++++++++++ ui/jquery.ui.sortable.js | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/unit/sortable/sortable_options.js b/tests/unit/sortable/sortable_options.js index 8dcf0e82fa4..a499c01c1fc 100644 --- a/tests/unit/sortable/sortable_options.js +++ b/tests/unit/sortable/sortable_options.js @@ -151,6 +151,34 @@ test( "#8792: issues with floated items in connected lists", function() { equal( changeCount, 3, "change fired once for each expected change when dragging a floated sortable to a connected container" ); }); +test( "#8301: single axis with connected list", function() { + expect( 1 ); + + var element = $( "#sortable" ).sortable({ + axis: "y", + tolerance: "pointer", + connectWith: ".connected" + }); + + $( "" ) + .sortable({ + axis: "y", + tolerance: "pointer", + connectWith: "#sortable", + receive: function() { + ok( true, "connected list received item" ); + } + }) + .insertAfter( element ); + + element.find( "li" ).eq( 0 ).simulate( "drag", { + handle: "corner", + dx: -1, + dy: 114, + moves: 1 + }); +}); + /* test("{ connectWith: false }, default", function() { ok(false, "missing test - untested code is broken code."); diff --git a/ui/jquery.ui.sortable.js b/ui/jquery.ui.sortable.js index efc83f3d593..865632db4bb 100644 --- a/ui/jquery.ui.sortable.js +++ b/ui/jquery.ui.sortable.js @@ -546,7 +546,9 @@ $.widget("ui.sortable", $.ui.mouse, { b = t + item.height, dyClick = this.offset.click.top, dxClick = this.offset.click.left, - isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; + isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), + isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), + isOverElement = isOverElementHeight && isOverElementWidth; if ( this.options.tolerance === "pointer" || this.options.forcePointerForContainers ||