Ticket #4977: droppable_pointer_fix.patch

File droppable_pointer_fix.patch, 2.5 KB (added by kevin.wells, 13 years ago)
  • jquery.ui.droppable.js

     
    108108                                && !inst.options.disabled
    109109                                && inst.options.scope == draggable.options.scope
    110110                                && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
    111                                 && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
     111                                && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance, event)
    112112                        ) { childrenIntersection = true; return false; }
    113113                });
    114114                if(childrenIntersection) return false;
     
    149149        }
    150150});
    151151
    152 $.ui.intersect = function(draggable, droppable, toleranceMode) {
     152$.ui.intersect = function(draggable, droppable, toleranceMode, event) {
    153153
    154154        if (!droppable.offset) return false;
    155155
     
    170170                                && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
    171171                        break;
    172172                case 'pointer':
    173                         var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
    174                                 draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
     173                        var draggableLeft = event.pageX,
     174                                draggableTop = event.pageY,
    175175                                isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
    176176                        return isOver;
    177177                        break;
     
    225225                $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
    226226
    227227                        if(!this.options) return;
    228                         if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
     228                        if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event))
    229229                                dropped = this._drop.call(this, event);
    230230
    231231                        if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
     
    246246                $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
    247247
    248248                        if(this.options.disabled || this.greedyChild || !this.visible) return;
    249                         var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
     249                        var intersects = $.ui.intersect(draggable, this, this.options.tolerance, event);
    250250
    251251                        var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
    252252                        if(!c) return;