]> source.dussan.org Git - jquery-ui.git/commitdiff
Sortable: Fixed container change detection. Fixes #5159 - Remove and receive events...
authorMartin Hoch <martin@fidion.de>
Thu, 23 Aug 2012 02:04:40 +0000 (22:04 -0400)
committerScott González <scott.gonzalez@gmail.com>
Thu, 23 Aug 2012 02:07:10 +0000 (22:07 -0400)
(cherry picked from commit b9ef00f0c7fe20980e3811e6622d8e2287e0fbf5)

Conflicts:

ui/jquery.ui.sortable.js

ui/jquery.ui.sortable.js

index 8f806c6cc085a129f72742984bc926dbada4b1e0..77842afce52095b9afc071e65ef088fad9840424 100644 (file)
@@ -1012,15 +1012,16 @@ $.widget("ui.sortable", $.ui.mouse, {
 
                if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
                if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
-               if(!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element
-                       if(!noPropagation) delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
-                       for (var i = this.containers.length - 1; i >= 0; i--){
-                               if($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) {
-                                       delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
-                                       delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.containers[i]));
-                               }
-                       };
-               };
+
+               // Check if the items Container has Changed and trigger appropriate
+               // events.
+               if (this !== this.currentContainer) {
+                       if(!noPropagation) {
+                               delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
+                               delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
+                               delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
+                       }
+               }
 
                //Post events to containers
                for (var i = this.containers.length - 1; i >= 0; i--){