Make WordPress Core

Ticket #29349: 29349.patch

File 29349.patch, 3.6 KB (added by azaozz, 10 years ago)
  • src/wp-admin/js/editor-expand.js

     
    3333                lastScrollPosition = 0,
    3434                pageYOffsetAtTop = 130,
    3535                pinnedToolsTop = 56,
     36                sidebarBottom = 20,
    3637                autoresizeMinHeight = 300,
    3738                initialMode = window.getUserSetting( 'editor' ),
    3839                // These are corrected when adjust() runs, except on scrolling if already set.
     
    432433                        $document.height() > ( $sideSortables.height() + postBodyTop + 120 ) && // the sidebar is not the tallest element
    433434                        heights.windowHeight < editorHeight ) { // the editor is taller than the viewport
    434435
    435                         if ( heights.sideSortablesHeight > heights.windowHeight || fixedSideTop || fixedSideBottom ) {
     436                        if ( ( heights.sideSortablesHeight + pinnedToolsTop + sidebarBottom ) > heights.windowHeight || fixedSideTop || fixedSideBottom ) {
    436437                                // Reset when scrolling to the top
    437438                                if ( windowPos + pinnedToolsTop <= postBodyTop ) {
    438439                                        $sideSortables.attr( 'style', '' );
     
    447448                                                        footerTop = $footer.offset().top;
    448449
    449450                                                        // don't get over the footer
    450                                                         if ( footerTop < sidebarTop + heights.sideSortablesHeight + 20 ) {
    451                                                                 sidebarTop = footerTop - heights.sideSortablesHeight - 20;
     451                                                        if ( footerTop < sidebarTop + heights.sideSortablesHeight + sidebarBottom ) {
     452                                                                sidebarTop = footerTop - heights.sideSortablesHeight - 12;
    452453                                                        }
    453454
    454455                                                        $sideSortables.css({
     
    456457                                                                top: sidebarTop,
    457458                                                                bottom: ''
    458459                                                        });
    459                                                 } else if ( ! fixedSideBottom && heights.sideSortablesHeight + $sideSortables.offset().top + 20 < windowPos + heights.windowHeight ) {
     460                                                } else if ( ! fixedSideBottom && heights.sideSortablesHeight + $sideSortables.offset().top + sidebarBottom < windowPos + heights.windowHeight ) {
    460461                                                        // pin the bottom
    461462                                                        fixedSideBottom = true;
    462463
     
    463464                                                        $sideSortables.css({
    464465                                                                position: 'fixed',
    465466                                                                top: 'auto',
    466                                                                 bottom: '20px'
     467                                                                bottom: sidebarBottom
    467468                                                        });
    468469                                                }
    469470                                        } else if ( windowPos < lastScrollPosition ) {
     
    471472                                                if ( fixedSideBottom ) {
    472473                                                        // let it scroll
    473474                                                        fixedSideBottom = false;
    474                                                         sidebarTop = $sideSortables.offset().top - 20;
     475                                                        sidebarTop = $sideSortables.offset().top - sidebarBottom;
    475476                                                        footerTop = $footer.offset().top;
    476477
    477478                                                        // don't get over the footer
    478                                                         if ( footerTop < sidebarTop + heights.sideSortablesHeight + 20 ) {
    479                                                                 sidebarTop = footerTop - heights.sideSortablesHeight - 20;
     479                                                        if ( footerTop < sidebarTop + heights.sideSortablesHeight + sidebarBottom ) {
     480                                                                sidebarTop = footerTop - heights.sideSortablesHeight - 12;
    480481                                                        }
    481482
    482483                                                        $sideSortables.css({
     
    499500                        } else {
    500501                                // if the sidebar container is smaller than the viewport, then pin/unpin the top when scrolling
    501502                                if ( windowPos >= ( postBodyTop - pinnedToolsTop ) ) {
     503
    502504                                        $sideSortables.css( {
    503505                                                position: 'fixed',
    504506                                                top: pinnedToolsTop
     
    569571                // Adjust when collapsing the menu, changing the columns, changing the body class.
    570572                $document.on( 'wp-collapse-menu.editor-expand postboxes-columnchange.editor-expand editor-classchange.editor-expand', adjust )
    571573                        .on( 'postbox-toggled.editor-expand', function() {
    572                                 if ( ! fixedSideTop && ! fixedSideBottom && window.pageYOffset > 20 ) {
     574                                if ( ! fixedSideTop && ! fixedSideBottom && window.pageYOffset > pinnedToolsTop ) {
    573575                                        fixedSideBottom = true;
    574576                                        window.scrollBy( 0, -1 );
    575577                                        adjust();