Skip to content

Commit

Permalink
Draggable: Account for margins when snapping
Browse files Browse the repository at this point in the history
Fixes #9724
  • Loading branch information
mikesherov committed Aug 14, 2014
1 parent 54004c8 commit 2d03839
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
4 changes: 4 additions & 0 deletions tests/unit/draggable/draggable_options.js
Original file line number Diff line number Diff line change
Expand Up @@ -961,6 +961,10 @@ test( "snap, snapMode, and snapTolerance", function() {
}),
element2 = $( "#draggable2" ).draggable();

// http://bugs.jqueryui.com/ticket/9724
// Draggable: Snapping coordinates thrown off by margin on draggable
element.css( "margin", "3px" );

element.offset({
top: 1,
left: 1
Expand Down
20 changes: 10 additions & 10 deletions ui/draggable.js
Original file line number Diff line number Diff line change
Expand Up @@ -916,9 +916,9 @@ $.ui.plugin.add("draggable", "snap", {

for (i = inst.snapElements.length - 1; i >= 0; i--){

l = inst.snapElements[i].left;
l = inst.snapElements[i].left - inst.margins.left;
r = l + inst.snapElements[i].width;
t = inst.snapElements[i].top;
t = inst.snapElements[i].top - inst.margins.top;
b = t + inst.snapElements[i].height;

if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
Expand All @@ -935,16 +935,16 @@ $.ui.plugin.add("draggable", "snap", {
ls = Math.abs(l - x2) <= d;
rs = Math.abs(r - x1) <= d;
if (ts) {
ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top;
}
if (bs) {
ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top;
}
if (ls) {
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left;
}
if (rs) {
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left;
}
}

Expand All @@ -956,16 +956,16 @@ $.ui.plugin.add("draggable", "snap", {
ls = Math.abs(l - x1) <= d;
rs = Math.abs(r - x2) <= d;
if (ts) {
ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top;
}
if (bs) {
ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top;
}
if (ls) {
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left;
}
if (rs) {
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left;
}
}

Expand Down

0 comments on commit 2d03839

Please sign in to comment.