Skip to content

Commit 0bb807b

Browse files
bhigginstjvantoll
authored andcommitted
Draggable: fix changing containment
If containment was set such that relative_container is set by _setContainment, and then containment changes to e.g. "document", "window", or an array, relative_container would not be unset, causing incorrect containment of the draggable. Add a unittest to check that containment with an array works after previously being set to "parent". Fixes #9733 Closes jquerygh-1176
1 parent 998d04d commit 0bb807b

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

tests/unit/draggable/draggable_options.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,15 +375,20 @@ test( "containment, account for border", function() {
375375
});
376376

377377
test( "containment, default, switching after initialization", function() {
378-
expect( 6 );
378+
expect( 8 );
379379

380-
var element = $( "#draggable1" ).draggable({ containment: false, scroll: false });
380+
var element = $( "#draggable1" ).draggable({ containment: false, scroll: false }),
381+
po = element.parent().offset(),
382+
containment = [ po.left - 100, po.top - 100, po.left + 500, po.top + 500 ];
381383

382384
TestHelpers.draggable.testDrag( element, element, -100, -100, -100, -100, "containment: default" );
383385

384386
element.draggable( "option", "containment", "parent" ).css({ top: 0, left: 0 });
385387
TestHelpers.draggable.testDrag( element, element, -100, -100, 0, 0, "containment: parent as option" );
386388

389+
element.draggable( "option", "containment", containment ).css({ top: 0, left: 0 });
390+
TestHelpers.draggable.testDrag( element, element, -100, -100, -100, -100, "containment: array as option" );
391+
387392
element.draggable( "option", "containment", false );
388393
TestHelpers.draggable.testDrag( element, element, -100, -100, -100, -100, "containment: false as option" );
389394
});

ui/jquery.ui.draggable.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ $.widget("ui.draggable", $.ui.mouse, {
420420
o = this.options,
421421
document = this.document[ 0 ];
422422

423+
this.relative_container = null;
424+
423425
if ( !o.containment ) {
424426
this.containment = null;
425427
return;

0 commit comments

Comments
 (0)