Bug Tracker

Ticket #2637: ui.droppable.js-recalc-position.patch

File ui.droppable.js-recalc-position.patch, 2.2 KB (added by spurkis, 14 years ago)

patch for this bug

  • ui.droppable.js

    old new  
    4040                });
    4141               
    4242                //Store the droppable's proportions
    43                 this.proportions = { width: this.element.outerWidth(), height: this.element.outerHeight() };
     43                this.recalcProportions();
    4444               
    4545                // Add the reference and positions to the manager
    4646                $.ui.ddmanager.droppables.push({ item: this, over: 0, out: 1 });
     
    114114                activate: function(e) {
    115115
    116116                        var draggable = $.ui.ddmanager.current;
     117                        // recalculate proportions incase they've changed:
     118                        this.recalcProportions();
     119
    117120                        $.ui.plugin.call(this, 'activate', [e, this.ui(draggable)]);
    118121                        if(draggable) this.element.triggerHandler("dropactivate", [e, this.ui(draggable)], this.options.activate);
    119122                               
     
    124127                        $.ui.plugin.call(this, 'deactivate', [e, this.ui(draggable)]);
    125128                        if(draggable) this.element.triggerHandler("dropdeactivate", [e, this.ui(draggable)], this.options.deactivate);
    126129                       
    127                 }
     130                },
     131                recalcProportions: function() {
     132                        this.proportions = { width: this.element.outerWidth(), height: this.element.outerHeight() };
     133                },
    128134        });
    129135       
    130136        $.ui.intersect = function(draggable, droppable, toleranceMode) {
     
    148154                                        &&     y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
    149155                                break;
    150156                        case 'pointer':
    151                                 return (   l < (draggable.positionAbs.left + draggable.clickOffset.left) && (draggable.positionAbs.left + draggable.clickOffset.left) < r
    152                                         && t < (draggable.positionAbs.top + draggable.clickOffset.top) && (draggable.positionAbs.top + draggable.clickOffset.top) < b);
     157                                var pX = draggable.positionAbs.left + draggable.clickOffset.left,
     158                                    pY = draggable.positionAbs.top + draggable.clickOffset.top;
     159                                return (   l < pX && pX < r
     160                                        && t < pY && pY < b);
    153161                                break;
    154162                        case 'touch':
    155163                                return (   (l < x1 && x1 < r && t < y1 && y1 < b)    // Top-Left Corner
     
    205213               
    206214                        //Run through all draggables and check their positions based on specific tolerance options
    207215                        $.each($.ui.ddmanager.droppables, function() {
    208 
    209216                                if(this.item.disabled) return false;
    210217                                var intersects = $.ui.intersect(draggable, this, this.item.options.tolerance);
    211218