Make WordPress Core

Ticket #30692: 30692.patch

File 30692.patch, 2.4 KB (added by azaozz, 12 years ago)
  • src/wp-admin/js/common.js

     
    193193                lastScrollPosition = 0,
    194194                pinnedMenuTop = false,
    195195                pinnedMenuBottom = false,
     196                isScrolling = false,
     197                scrollTimer,
    196198                menuTop = 0,
    197199                height = {
     200                        document: $document.height(),
    198201                        window: $window.height(),
    199202                        wpwrap: $wpwrap.height(),
    200203                        adminbar: $adminbar.height(),
     
    554557                }
    555558
    556559                if ( height.menu + height.adminbar > height.window ) {
     560                        if ( windowPos < 1 || windowPos + height.window > height.document - 1 ) {
     561                                return;
     562                        }
     563
    557564                        if ( windowPos > lastScrollPosition ) {
    558565                                // Scrolling down
    559566                                if ( pinnedMenuTop ) {
     
    626633                lastScrollPosition = windowPos;
    627634        }
    628635
     636        function resetHeights() {
     637                height = {
     638                        document: $document.height(),
     639                        window: $window.height(),
     640                        wpwrap: $wpwrap.height(),
     641                        adminbar: $adminbar.height(),
     642                        menu: $adminMenuWrap.height()
     643                };
     644        }
     645
    629646        function unpinMenu() {
    630647                if ( isIOS ) {
    631648                        return;
     
    640657        }
    641658
    642659        function setPinMenu() {
     660                resetHeights();
     661
    643662                if ( $adminmenu.data('wp-responsive') ) {
    644663                        $body.removeClass( 'sticky-menu' );
    645664                        unpinMenu();
     
    652671                }
    653672        }
    654673
     674        function scrollStart() {
     675                if ( isScrolling ) {
     676                        window.clearTimeout( scrollTimer );
     677
     678                        scrollTimer = window.setTimeout( function() {
     679                                isScrolling = false;
     680                        }, 200 );
     681                } else {
     682                        isScrolling = true;
     683                        $document.triggerHandler( 'wp-scroll-start' );
     684                }
     685        }
     686
    655687        if ( ! isIOS ) {
    656                 $window.on( 'scroll.pin-menu', pinMenu );
     688                $window.on( 'scroll.pin-menu', function() {
     689                        scrollStart();
     690                        pinMenu();
     691                });
    657692        }
    658693
    659694        window.wpResponsive = {
     
    792827        window.wpResponsive.init();
    793828        setPinMenu();
    794829
    795         $document.on( 'wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu', function() {
    796                 height.wpwrap = $wpwrap.height();
    797                 height.window = $window.height();
    798                 height.adminbar = $adminbar.height();
    799                 setPinMenu();
    800         }).on( 'wp-collapse-menu.pin-menu', function() {
    801                 height.wpwrap = $wpwrap.height();
    802                 height.menu = $adminMenuWrap.height();
    803                 setPinMenu();
    804         });
    805 
     830        $document.on( 'wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu', setPinMenu );
    806831});
    807832
    808833// Fire a custom jQuery event at the end of window resize