WordPress.org

Make WordPress Core

Ticket #22716: 22716.2.diff

File 22716.2.diff, 1.6 KB (added by koopersmith, 5 years 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