WordPress.org

Make WordPress Core

Ticket #22716: 22716.2.diff

File 22716.2.diff, 1.6 KB (added by koopersmith, 17 months ago)
  • wp-includes/js/media-views.js

     
    18611861                        _.defaults( this.options, { 
    18621862                                container: document.body, 
    18631863                                title:     '', 
    1864                                 propagate: true 
     1864                                propagate: true, 
     1865                                freeze:    document.body 
    18651866                        }); 
    18661867                }, 
    18671868 
     
    18971898                }, 
    18981899 
    18991900                open: function() { 
    1900                         if ( this.$el.is(':visible') ) 
     1901                        var $el = this.$el, 
     1902                                options = this.options, 
     1903                                $freeze; 
     1904 
     1905                        if ( $el.is(':visible') ) 
    19011906                                return this; 
    19021907 
    19031908                        if ( ! this.views.attached ) 
    19041909                                this.attach(); 
    19051910 
    1906                         this.$el.show().focus(); 
     1911                        // If the `freeze` option is set, record the window's scroll 
     1912                        // position and the body's overflow, and then set overflow to hidden. 
     1913                        if ( options.freeze ) { 
     1914                                $freeze = $( options.freeze ); 
     1915                                this._freeze = { 
     1916                                        overflow:  $freeze.css('overflow'), 
     1917                                        scrollTop: $( window ).scrollTop() 
     1918                                }; 
     1919                                $freeze.css( 'overflow', 'hidden' ); 
     1920                        } 
     1921 
     1922                        $el.show().focus(); 
    19071923                        return this.propagate('open'); 
    19081924                }, 
    19091925 
    19101926                close: function( options ) { 
     1927                        var freeze = this._freeze; 
     1928 
    19111929                        if ( ! this.views.attached || ! this.$el.is(':visible') ) 
    19121930                                return this; 
    19131931 
    19141932                        this.$el.hide(); 
    19151933                        this.propagate('close'); 
    19161934 
     1935                        // If the `freeze` option is set, restore the container's scroll 
     1936                        // position and overflow property. 
     1937                        if ( freeze ) { 
     1938                                $( this.options.freeze ).css( 'overflow', freeze.overflow ); 
     1939                                $( window ).scrollTop( freeze.scrollTop ); 
     1940                        } 
     1941 
    19171942                        if ( options && options.escape ) 
    19181943                                this.propagate('escape'); 
    19191944