WordPress.org

Make WordPress Core

Ticket #37690: 37690.patch

File 37690.patch, 2.2 KB (added by azaozz, 4 years ago)
  • src/wp-admin/js/editor-expand.js

     
    1616                        $textTop = $( '#ed_toolbar' ),
    1717                        $textEditor = $( '#content' ),
    1818                        textEditor = $textEditor[0],
     19                        $textEditorClone = $textEditor.clone().attr({ id: 'content-clone', name: null }),
     20                        textEditorClone = $textEditorClone[0],
    1921                        oldTextLength = 0,
    2022                        $bottom = $( '#post-status-info' ),
    2123                        $menuBar = $(),
     
    7678                }
    7779
    7880                function textEditorResize() {
    79                         if ( mceEditor && ! mceEditor.isHidden() ) {
     81                        if ( ( mceEditor && ! mceEditor.isHidden() ) || ! textEditorClone ) {
    8082                                return;
    8183                        }
    8284
     
    8991                        var top = window.scrollTop;
    9092
    9193                        if ( length < oldTextLength ) {
    92                                 // textEditor.scrollHeight is not adjusted until the next line.
    93                                 textEditor.style.height = 'auto';
     94                                if ( oldTextLength - length === 1 ) {
     95                                        textEditor.style.height = ( height - 19 ) + 'px';
    9496
    95                                 if ( textEditor.scrollHeight > autoresizeMinHeight ) {
    96                                         textEditor.style.height = textEditor.scrollHeight + 'px';
     97                                        if ( textEditor.scrollHeight > autoresizeMinHeight ) {
     98                                                textEditor.style.height = textEditor.scrollHeight + 'px';
     99                                        } else {
     100                                                textEditor.style.height = autoresizeMinHeight + 'px';
     101                                        }
    97102                                } else {
    98                                         textEditor.style.height = autoresizeMinHeight + 'px';
     103                                        textEditorClone.value = textEditor.value;
     104
     105                                        if ( textEditorClone.scrollHeight > autoresizeMinHeight ) {
     106                                                textEditor.style.height = textEditorClone.scrollHeight + 'px';
     107                                        } else if ( textEditorClone.scrollHeight < height ) {
     108                                                textEditor.style.height = autoresizeMinHeight + 'px';
     109                                        }
    99110                                }
    100111
    101112                                // Prevent scroll-jumping in Firefox and IE.
     
    112123                        oldTextLength = length;
    113124                }
    114125
     126                // Append the cloned textarea after the "real" one and move it off screen.
     127                $textEditor.after( $textEditorClone.css({ position: 'absolute', left: '-10000em' }) );
     128
    115129                // We need to wait for TinyMCE to initialize.
    116130                $document.on( 'tinymce-editor-init.editor-expand', function( event, editor ) {
    117131                        var VK = window.tinymce.util.VK,