]> source.dussan.org Git - jquery-ui.git/commitdiff
droppable: greedy childs that dont accept the draggable dont block propagation anymor...
authorPaul Bakaus <paul.bakaus@googlemail.com>
Sat, 22 Aug 2009 12:25:50 +0000 (12:25 +0000)
committerPaul Bakaus <paul.bakaus@googlemail.com>
Sat, 22 Aug 2009 12:25:50 +0000 (12:25 +0000)
ui/ui.droppable.js

index 7966ae3b0154948df281e0c3c6b77197655d724e..4c359799c79a5c8fe4ddb35bec2177e8c9ada3e5 100644 (file)
@@ -103,9 +103,13 @@ $.widget("ui.droppable", {
                var childrenIntersection = false;
                this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
                        var inst = $.data(this, 'droppable');
-                       if(inst.options.greedy && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)) {
-                               childrenIntersection = true; return false;
-                       }
+                       if(
+                               inst.options.greedy
+                               && !inst.options.disabled
+                               && inst.options.scope == draggable.options.scope
+                               && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
+                               && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+                       ) { childrenIntersection = true; return false; }
                });
                if(childrenIntersection) return false;
 
@@ -239,7 +243,6 @@ $.ui.ddmanager = {
                if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
 
                //Run through all droppables and check their positions based on specific tolerance options
-
                $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
 
                        if(this.options.disabled || this.greedyChild || !this.visible) return;