Ticket #4666: resizable-alsoresize.patch

File resizable-alsoresize.patch, 2.2 KB (added by Mikko Rantanen, 11 years ago)

Patch for fixing the bug

  • ui.resizable.js

     
    531531
    532532                var self = $(this).data("resizable"), o = self.options;
    533533
     534                // The supported values for alsoResize are html elements,
     535                // selector string and jQuery object. All of these can be
     536                // iterated with the each statement.
    534537                _store = function(exp) {
    535538                        $(exp).each(function() {
    536539                                $(this).data("resizable-alsoresize", {
     
    538541                                        left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
    539542                                });
    540543                        });
    541                 };
    542 
    543                 if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
    544                         if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0];      _store(o.alsoResize); }
    545                         else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }
     544                };     
     545               
     546                if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode && !o.alsoResize.length) {
     547                        // A dictionary of selectors, where the key stands for the
     548                        // resizable item and the value is a list of properties that
     549                        // are modified while being resized.
     550                        $each(o.alsoResize, function(exp, c) { _store(exp); });
    546551                }else{
     552                        // The objects that can be iterated normally with $(exp).each:
     553                        // html elements, jQuery object, simple selector string.
    547554                        _store(o.alsoResize);
    548555                }
    549556        },
     
    560567                        $(exp).each(function() {
    561568                                var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];
    562569
    563                                 $.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
     570                                $.each(css, function(i, prop) {
    564571                                        var sum = (start[prop]||0) + (delta[prop]||0);
    565572                                        if (sum && sum >= 0)
    566573                                                style[prop] = sum || null;
     
    576583                        });
    577584                };
    578585
    579                 if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
     586                // See the start event for the explanation for this conditional.
     587                if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType && !o.alsoResize.length) {
    580588                        $.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });
    581589                }else{
    582590                        _alsoResize(o.alsoResize);
    583                 }
     591                }               
    584592        },
    585593
    586594        stop: function(event, ui){