]> source.dussan.org Git - jquery-ui.git/commitdiff
Core and Sortable: $.ui.contains method moved into the core. This method could be...
authorEduardo Lundgren <eduardolundgren@gmail.com>
Wed, 12 Nov 2008 03:57:23 +0000 (03:57 +0000)
committerEduardo Lundgren <eduardolundgren@gmail.com>
Wed, 12 Nov 2008 03:57:23 +0000 (03:57 +0000)
ui/ui.core.js
ui/ui.sortable.js

index 1507fda0f592d455dde95fa8c2c26879a546b56a..4e93c6b21835a49c7bfd74a7273b0df08e337261 100644 (file)
@@ -66,7 +66,19 @@ $.ui = {
                                        set[i][1].apply(instance.element, args);
                                }
                        }
-               }       
+               }
+       },
+       
+       contains: function(a, b) {
+               var safari2 = $.browser.safari && $.browser.version < 522;
+           if (a.contains && !safari2) {
+               return a.contains(b);
+           }
+           if (a.compareDocumentPosition)
+               return !!(a.compareDocumentPosition(b) & 16);
+           while (b = b.parentNode)
+                 if (b == a) return true;
+           return false;
        },
        
        cssCache: {},
@@ -80,7 +92,7 @@ $.ui = {
                //Opera and Safari set width and height to 0px instead of auto
                //Safari returns rgba(0,0,0,0) when bgcolor is not set
                $.ui.cssCache[name] = !!(
-                       (!(/auto|default/).test(tmp.css('cursor')) || (/^[1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) || 
+                       (!(/auto|default/).test(tmp.css('cursor')) || (/^[1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) ||
                        !(/none/).test(tmp.css('backgroundImage')) || !(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor')))
                );
                try { $('body').get(0).removeChild(tmp.get(0)); } catch(e){}
index b92e201663125837cde8aec7fd918738bfcb1511..f87967a721d98c4d62703581b69627e86ae5894a 100644 (file)
  */
 (function($) {
 
-function contains(a, b) {
-    var safari2 = $.browser.safari && $.browser.version < 522;
-    if (a.contains && !safari2) {
-        return a.contains(b);
-    }
-    if (a.compareDocumentPosition)
-        return !!(a.compareDocumentPosition(b) & 16);
-    while (b = b.parentNode)
-          if (b == a) return true;
-    return false;
-};
-
 $.widget("ui.sortable", $.extend({}, $.ui.mouse, {
        _init: function() {
 
@@ -160,6 +148,10 @@ $.widget("ui.sortable", $.extend({}, $.ui.mouse, {
                var itemHeight = item.height, itemWidth = item.width;
                var itemTop = item.top, itemLeft = item.left;
 
+               if (this.cancelIntersection) {
+                       return false;
+               }
+
                var isOverElementHeight = $.ui.isOverHeight(helperTop + dyClick, itemTop, itemHeight);
                var isOverElementWidth = $.ui.isOverWidth(helperLeft + dxClick, itemLeft, itemWidth);
                var isOverElement = isOverElementHeight && isOverElementWidth;
@@ -419,7 +411,7 @@ $.widget("ui.sortable", $.extend({}, $.ui.mouse, {
                                                //When entering a new container, we will find the item with the least distance and append our item near it
                                                var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[i].floating ? 'left' : 'top'];
                                                for (var j = this.items.length - 1; j >= 0; j--) {
-                                                       if(!contains(this.containers[i].element[0], this.items[j].item[0])) continue;
+                                                       if(!$.ui.contains(this.containers[i].element[0], this.items[j].item[0])) continue;
                                                        var cur = this.items[j][this.containers[i].floating ? 'left' : 'top'];
                                                        if(Math.abs(cur - base) < dist) {
                                                                dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
@@ -711,14 +703,14 @@ $.widget("ui.sortable", $.extend({}, $.ui.mouse, {
 
                        var intersection = this._intersectsWithEdge(this.items[i]);
 
-                       if(!intersection) continue;
+                       if (!intersection) continue;
 
                        var item = this.items[i].item[0];
 
                        if(item != this.currentItem[0] //cannot intersect with itself
                                &&      this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != item //no useless actions that have been done before
-                               &&      !contains(this.placeholder[0], item) //no action if the item moved is the parent of the item checked
-                               && (this.options.type == 'semi-dynamic' ? !contains(this.element[0], item) : true)
+                               &&      !$.ui.contains(this.placeholder[0], item) //no action if the item moved is the parent of the item checked
+                               && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], item) : true)
                        ) {
 
                                this.direction = intersection == 1 ? "down" : "up";
@@ -803,10 +795,10 @@ $.widget("ui.sortable", $.extend({}, $.ui.mouse, {
                        this.currentItem.show();
 
                if(this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) this._propagate("update", e, null, noPropagation); //Trigger update callback if the DOM position has changed
-               if(!contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element
+               if(!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element
                        this._propagate("remove", e, null, noPropagation);
                        for (var i = this.containers.length - 1; i >= 0; i--){
-                               if(contains(this.containers[i].element[0], this.currentItem[0])) {
+                               if($.ui.contains(this.containers[i].element[0], this.currentItem[0])) {
                                        this.containers[i]._propagate("update", e, this, noPropagation);
                                        this.containers[i]._propagate("receive", e, this, noPropagation);
                                }