WordPress.org

Make WordPress Core

Ticket #13220: sorting.improvements.progress.2.patch

File sorting.improvements.progress.2.patch, 1.4 KB (added by koopersmith, 8 years ago)
  • wp-admin/js/nav-menu.dev.js

     
    163163                },
    164164
    165165                initSortables : function() {
    166                         var currentDepth = 0, originalDepth, minDepth, maxDepth,
     166                        var currentDepth = 0, originalDepth, minDepth, maxDepth, prevBottom,
    167167                                menuLeft = api.menuList.offset().left,
    168168                                newItem, transport;
    169169
     
    232232                                        updateDepthRange(ui);
    233233                                },
    234234                                sort: function(e, ui) {
    235                                         var depth = api.pxToDepth(ui.helper.offset().left - menuLeft);
     235                                        var offset = ui.helper.offset(),
     236                                                depth = api.pxToDepth( offset.left - menuLeft );
    236237                                        // Check and correct if depth is not within range.
    237                                         if ( depth < minDepth ) depth = minDepth;
    238                                         else if ( depth > maxDepth ) depth = maxDepth;
     238                                        // Also, if the dragged element is dragged upwards over
     239                                        // an item, shift the placeholder to a child position.
     240                                        if ( depth > maxDepth || offset.top < prevBottom ) depth = maxDepth;
     241                                        else if ( depth < minDepth ) depth = minDepth;
    239242
    240243                                        if( depth != currentDepth )
    241244                                                updateCurrentDepth(ui, depth);
     
    250253                                if( prev[0] == ui.item[0] ) prev = prev.prev();
    251254                                if( next[0] == ui.item[0] ) next = next.next();
    252255
     256                                prevBottom = (prev.length) ? prev.offset().top + prev.height() : 0;
    253257                                minDepth = (next.length) ? next.menuItemDepth() : 0;
    254258
    255259                                if( prev.length )