Ticket #4933: ui.droppable.patch

File ui.droppable.patch, 2.2 KB (added by silverj, 10 years ago)

Possible fix. drop() will only be called for the elements with highest z-index

  • C:/projektid/private/scrumwall/src/main/webapp/js/jquery.ui-1.7.1/ui.droppable.js

     
    109109                });
    110110                if(childrenIntersection) return false;
    111111
     112
    112113                if(this.options.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
    113                         if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
    114                         if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
    115                         this._trigger('drop', event, this.ui(draggable));
    116                         return this.element;
     114            if(this.options.acceptFallthrough || this.isOnTop(draggable)){
     115                if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
     116                if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
     117                this._trigger('drop', event, this.ui(draggable));
     118
     119                return this.element;
     120            }
    117121                }
    118122
    119123                return false;
    120124
    121125        },
     126    isOnTop: function(draggable){
     127        var maxZIndex = parseInt($(this.element).css("z-index"));
     128       
     129        $(":data(droppable)").not(".ui-draggable-dragging").each(function() {
     130            var inst = $.data(this, 'droppable');
     131            if($.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)){
     132                var zIndex = $(this).css("z-index");
     133                if(zIndex == "auto"){
     134                    zIndex = 0;
     135                }
     136                zIndex = parseInt(zIndex);
     137                if(zIndex > maxZIndex) {
     138                    maxZIndex = zIndex
     139                }
     140            }
     141        });
    122142
     143
     144        return maxZIndex == $(this.element).css("z-index");
     145    },
    123146        ui: function(c) {
    124147                return {
    125148                        draggable: (c.currentItem || c.element),
     
    142165                greedy: false,
    143166                hoverClass: false,
    144167                scope: 'default',
    145                 tolerance: 'intersect'
     168                tolerance: 'intersect',
     169        acceptFallthrough: false
    146170        }
    147171});
    148172