Ticket #4957: patch-4957.patch

File patch-4957.patch, 5.5 KB (added by Jörn Zaefferer, 12 years ago)
  • ui/jquery.ui.core.js

     
    109109                        ret = $(context).parent();
    110110                } else if (value == 'clone') {
    111111                        ret = $(context).clone().removeAttr('id');
    112                 } else if (value == 'window') {
    113                         ret = $(context).window(); // requires .window() plugin
     112                } else if (value == 'window' || value === window) {
     113                        ret = $(window);
    114114                } else if (value.nodeType || typeof value == 'string' || $.isArray(value)) {
    115                         ret = $(value, context);
     115                        ret = $(value);
    116116                } else if ($.isFunction(value)) {
    117117                        ret = value(context);
    118118                }
     
    214214                }
    215215
    216216                return 0;
    217         },
    218        
    219         window: function() {
    220                 return this.pushStack($.unique($.map(this, function() {
    221                         return this.ownerDocument.defaultView;
    222                 })));
    223217        }
    224218});
    225219
  • ui/jquery.ui.position.js

     
    66 * and GPL (GPL-LICENSE.txt) licenses.
    77 *
    88 * http://docs.jquery.com/UI/Position
     9 *
     10 * Depends:
     11 *      jquery.ui.core.js
    912 */
    1013(function($) {
    1114
     
    2528        // make a copy, we don't want to modify arguments
    2629        options = $.extend({}, options);
    2730
    28         var target = $(options.of),
    29                 collision = (options.collision || 'flip').split(' '),
    30                 offset = options.offset ? options.offset.split(' ') : [0, 0],
    31                 targetWidth,
    32                 targetHeight,
    33                 basePosition;
    34 
    35         if (options.of.nodeType === 9) {
    36                 targetWidth = target.width();
    37                 targetHeight = target.height();
    38                 basePosition = { top: 0, left: 0 };
    39         } else if (options.of.scrollTo && options.of.document) {
    40                 targetWidth = target.width();
    41                 targetHeight = target.height();
    42                 basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
    43         } else if (options.of.preventDefault) {
    44                 // force left top to allow flipping
    45                 options.at = 'left top';
    46                 targetWidth = targetHeight = 0;
    47                 basePosition = { top: options.of.pageY, left: options.of.pageX };
    48         } else {
    49                 targetWidth = target.outerWidth();
    50                 targetHeight = target.outerHeight();
    51                 basePosition = target.offset();
    52         }
     31        var collision = (options.collision || 'flip').split(' '),
     32                offset = options.offset ? options.offset.split(' ') : [0, 0];
    5333
    5434        // force my and at to have valid horizontal and veritcal positions
    5535        // if a value is missing or invalid, it will be converted to center
     
    7959        }
    8060        offset[1] = parseInt(offset[1], 10) || 0;
    8161
    82         switch (options.at[0]) {
    83                 case 'right':
    84                         basePosition.left += targetWidth;
    85                         break;
    86                 case horizontalDefault:
    87                         basePosition.left += targetWidth / 2;
    88                         break;
    89         }
    90 
    91         switch (options.at[1]) {
    92                 case 'bottom':
    93                         basePosition.top += targetHeight;
    94                         break;
    95                 case verticalDefault:
    96                         basePosition.top += targetHeight / 2;
    97                         break;
    98         }
    99 
    100         basePosition.left += offset[0];
    101         basePosition.top += offset[1];
    102 
    10362        return this.each(function() {
    10463                var elem = $(this),
    10564                        elemWidth = elem.outerWidth(),
    10665                        elemHeight = elem.outerHeight(),
    107                         position = $.extend({}, basePosition),
    108                         over,
    10966                        myOffset,
    110                         atOffset;
     67                        atOffset,
     68                        target = $.ui.element(options.of, this),
     69                        targetWidth,
     70                        targetHeight,
     71                        position;
    11172
     73                if (target[0] && target[0].nodeType === 9) {
     74                        targetWidth = target.width();
     75                        targetHeight = target.height();
     76                        position = { top: 0, left: 0 };
     77                } else if (target[0] && target[0].scrollTo && target[0].document) {
     78                        targetWidth = target.width();
     79                        targetHeight = target.height();
     80                        position = { top: target.scrollTop(), left: target.scrollLeft() };
     81                } else if (options.of.preventDefault) {
     82                        // force left top to allow flipping
     83                        options.at = 'left top';
     84                        targetWidth = targetHeight = 0;
     85                        position = { top: options.of.pageY, left: options.of.pageX };
     86                } else {
     87                        targetWidth = target.outerWidth();
     88                        targetHeight = target.outerHeight();
     89                        position = target.offset();
     90                }
     91               
     92                position.left += offset[0];
     93                position.top += offset[1];
     94               
     95                switch (options.at[0]) {
     96                        case 'right':
     97                                position.left += targetWidth;
     98                                break;
     99                        case horizontalDefault:
     100                                position.left += targetWidth / 2;
     101                                break;
     102                }
     103       
     104                switch (options.at[1]) {
     105                        case 'bottom':
     106                                position.top += targetHeight;
     107                                break;
     108                        case verticalDefault:
     109                                position.top += targetHeight / 2;
     110                                break;
     111                }
     112               
    112113                switch (options.my[0]) {
    113114                        case 'right':
    114115                                position.left -= elemWidth;
  • tests/unit/position/position.html

     
    44        <title>jQuery UI Position Test Suite</title>
    55
    66        <script type="text/javascript" src="../../../jquery-1.4.js"></script>
     7        <script type="text/javascript" src="../../../ui/jquery.ui.core.js"></script>
    78        <script type="text/javascript" src="../../../ui/jquery.ui.position.js"></script>
    89
    910        <link   type="text/css"       href="../testsuite.css" rel="stylesheet" />
  • tests/unit/position/position_core.js

     
    129129        $('#elx').position({
    130130                my: 'right bottom',
    131131                at: 'right bottom',
    132                 of: window,
     132                of: 'window',
    133133                collision: 'none'
    134134        });
    135135        same($('#elx').offset(), {