Make WordPress Core

Changeset 29978 for trunk


Ignore:
Timestamp:
10/21/2014 06:11:07 AM (12 years ago)
Author:
azaozz
Message:

Admin menu:

  • Fix scrolling the pinned menu with a mouse wheel.
  • Fix pinning when the menu is only slightly taller than the viewport.
  • Disable pinning on IE8, updating CSS top makes it jump when scrolling with a mouse wheel.

See #29806

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/common.js

    r29898 r29978  
    178178                isIOS = /iPhone|iPad|iPod/.test( navigator.userAgent ),
    179179                isAndroid = navigator.userAgent.indexOf( 'Android' ) !== -1,
     180                isIE8 = $( document.documentElement ).hasClass( 'ie8' ),
    180181                $document = $( document ),
    181182                $window = $( window ),
     
    196197                height = {
    197198                        window: $window.height(),
     199                        wpwrap: $wpwrap.height(),
    198200                        adminbar: $adminbar.height(),
    199201                        menu: $adminMenuWrap.height()
     
    536538                var windowPos = $window.scrollTop();
    537539
    538                 if ( isIOS || $adminmenu.data('wp-responsive') ) {
     540                if ( isIOS || isIE8 || $adminmenu.data( 'wp-responsive' ) ) {
     541                        return;
     542                }
     543
     544                if ( height.menu + height.adminbar + 20 > height.wpwrap ) { // 20px "buffer"
     545                        unpinMenu();
    539546                        return;
    540547                }
     
    546553                                        // let it scroll
    547554                                        pinnedMenuTop = false;
    548                                         menuTop = $adminMenuWrap.offset().top - height.adminbar;
     555                                        menuTop = $adminMenuWrap.offset().top - height.adminbar - ( windowPos - lastScrollPosition );
     556
     557                                        if ( menuTop + height.menu + height.adminbar < windowPos + height.window ) {
     558                                                menuTop = windowPos + height.window - height.menu - height.adminbar;
     559                                        }
    549560
    550561                                        $adminMenuWrap.css({
     
    568579                                        // let it scroll
    569580                                        pinnedMenuBottom = false;
    570                                         menuTop = $adminMenuWrap.offset().top - height.adminbar;
     581                                        menuTop = $adminMenuWrap.offset().top - height.adminbar + ( lastScrollPosition - windowPos );
     582
     583                                        if ( menuTop + height.menu > windowPos + height.window ) {
     584                                                menuTop = windowPos;
     585                                        }
    571586
    572587                                        $adminMenuWrap.css({
     
    588603                                // Resizing
    589604                                pinnedMenuTop = pinnedMenuBottom = false;
    590                                 menuTop = $adminMenuWrap.offset().top - height.adminbar;
    591 
    592                                 $adminMenuWrap.css({
    593                                         position: 'absolute',
    594                                         top: menuTop,
    595                                         bottom: ''
    596                                 });
     605                                menuTop = windowPos + height.window - height.menu - height.adminbar - 1;
     606
     607                                if ( menuTop > 0 ) {
     608                                        $adminMenuWrap.css({
     609                                                position: 'absolute',
     610                                                top: menuTop,
     611                                                bottom: ''
     612                                        });
     613                                } else {
     614                                        unpinMenu();
     615                                }
    597616                        }
    598617                }
     
    627646        }
    628647
    629         setPinMenu();
    630 
    631648        if ( ! isIOS ) {
    632649                $window.on( 'scroll.pin-menu', pinMenu );
    633650        }
    634 
    635         $document.on( 'wp-window-resized.pin-menu', function() {
    636                 height.window = $window.height();
    637                 height.adminbar = $adminbar.height();
    638                 setPinMenu();
    639         }).on( 'wp-collapse-menu.pin-menu', function() {
    640                 height.menu = $adminMenuWrap.height();
    641                 setPinMenu();
    642         });
    643651
    644652        window.wpResponsive = {
     
    776784
    777785        window.wpResponsive.init();
     786        setPinMenu();
     787
     788        $document.on( 'wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu', function() {
     789                height.wpwrap = $wpwrap.height();
     790                height.window = $window.height();
     791                height.adminbar = $adminbar.height();
     792                setPinMenu();
     793        }).on( 'wp-collapse-menu.pin-menu', function() {
     794                height.wpwrap = $wpwrap.height();
     795                height.menu = $adminMenuWrap.height();
     796                setPinMenu();
     797        });
     798
    778799});
    779800
Note: See TracChangeset for help on using the changeset viewer.