]> source.dussan.org Git - jquery-ui.git/commitdiff
draggable: fixed numerous issues with over/out logic on connected sortable lists...
authorPaul Bakaus <paul.bakaus@googlemail.com>
Tue, 10 Feb 2009 15:05:01 +0000 (15:05 +0000)
committerPaul Bakaus <paul.bakaus@googlemail.com>
Tue, 10 Feb 2009 15:05:01 +0000 (15:05 +0000)
ui/ui.draggable.js

index 92dbc372dbc92fb4743146771ce3c65863b8825b..3946a3c36db3f5b8e4f033916b2e7c76f828ead5 100644 (file)
@@ -500,11 +500,17 @@ $.ui.plugin.add("draggable", "connectToSortable", {
                };
 
                $.each(inst.sortables, function(i) {
-
-                       if(checkPos.call(inst, this.instance.containerCache)) {
+                       
+                       //Copy over some variables to allow calling the sortable's native _intersectsWith
+                       this.instance.positionAbs = inst.positionAbs;
+                       this.instance.helperProportions = inst.helperProportions;
+                       this.instance.offset.click = inst.offset.click;
+                       
+                       if(this.instance._intersectsWith(this.instance.containerCache)) {
 
                                //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
                                if(!this.instance.isOver) {
+
                                        this.instance.isOver = 1;
                                        //Now we fake the start of dragging for the sortable instance,
                                        //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
@@ -539,9 +545,16 @@ $.ui.plugin.add("draggable", "connectToSortable", {
                                //If it doesn't intersect with the sortable, and it intersected before,
                                //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
                                if(this.instance.isOver) {
+
                                        this.instance.isOver = 0;
                                        this.instance.cancelHelperRemoval = true;
-                                       this.instance.options.revert = false; //No revert here
+                                       
+                                       //Prevent reverting on this forced stop
+                                       this.instance.options.revert = false;
+                                       
+                                       // The out event needs to be triggered independently
+                                       this.instance._trigger('out', event, this.instance._uiHash(this.instance));
+                                       
                                        this.instance._mouseStop(event, true);
                                        this.instance.options.helper = this.instance.options._helper;