r2064 - trunk/ui

r2064 - trunk/ui


Author: paul.bakaus
Date: Tue Feb 10 07:05:01 2009
New Revision: 2064
Modified:
trunk/ui/ui.draggable.js
Log:
draggable: fixed numerous issues with over/out logic on connected sortable
lists (fixes #3988)
Modified: trunk/ui/ui.draggable.js
==============================================================================
--- trunk/ui/ui.draggable.js    (original)
+++ trunk/ui/ui.draggable.js    Tue Feb 10 07:05:01 2009
@@ -500,11 +500,17 @@
        };
        $.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 @@
                //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;