Ticket #32197: 32197.3.patch
File 32197.3.patch, 4.0 KB (added by , 10 years ago) |
---|
-
src/wp-admin/js/editor-expand.js
15 15 $visualEditor = $(), 16 16 $textTop = $( '#ed_toolbar' ), 17 17 $textEditor = $( '#content' ), 18 $textEditorClone = $( '<div id="content-textarea-clone"></div>' ), 18 textEditor = $textEditor[0], 19 textEditorLength = 0, 19 20 $bottom = $( '#post-status-info' ), 20 21 $menuBar = $(), 21 22 $statusBar = $(), … … 52 53 sideSortablesHeight: 0 53 54 }; 54 55 55 $textEditorClone.insertAfter( $textEditor );56 57 $textEditorClone.css( {58 'font-family': $textEditor.css( 'font-family' ),59 'font-size': $textEditor.css( 'font-size' ),60 'line-height': $textEditor.css( 'line-height' ),61 'white-space': 'pre-wrap',62 'word-wrap': 'break-word'63 } );64 65 56 function getHeights() { 66 57 var windowWidth = $window.width(); 67 58 … … 84 75 } 85 76 } 86 77 87 function textEditorKeyup( event ) { 88 var VK = jQuery.ui.keyCode, 89 key = event.keyCode, 90 range = document.createRange(), 91 selStart = $textEditor[0].selectionStart, 92 selEnd = $textEditor[0].selectionEnd, 93 textNode = $textEditorClone[0].firstChild, 94 buffer = 10, 95 offset, cursorTop, cursorBottom, editorTop, editorBottom; 78 function textEditorResize() { 79 var pageYOffset, height, 80 reduce = textEditorLength && textEditorLength > textEditor.value.length; 96 81 97 if ( selStart && selEnd && selStart !== selEnd ) {98 return;99 }100 101 // These are not TinyMCE ranges.102 try {103 range.setStart( textNode, selStart );104 range.setEnd( textNode, selEnd + 1 );105 } catch ( ex ) {}106 107 offset = range.getBoundingClientRect();108 109 if ( ! offset.height ) {110 return;111 }112 113 cursorTop = offset.top - buffer;114 cursorBottom = cursorTop + offset.height + buffer;115 editorTop = heights.adminBarHeight + heights.toolsHeight + heights.textTopHeight;116 editorBottom = heights.windowHeight - heights.bottomHeight;117 118 if ( cursorTop < editorTop && ( key === VK.UP || key === VK.LEFT || key === VK.BACKSPACE ) ) {119 window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - editorTop );120 } else if ( cursorBottom > editorBottom ) {121 window.scrollTo( window.pageXOffset, cursorBottom + window.pageYOffset - editorBottom );122 }123 }124 125 function textEditorResize() {126 82 if ( ( mceEditor && ! mceEditor.isHidden() ) || ( ! mceEditor && initialMode === 'tinymce' ) ) { 127 83 return; 128 84 } 129 85 130 var textEditorHeight = $textEditor.height(),131 hiddenHeight;86 textEditorLength = textEditor.value.length; 87 height = textEditor.style.height; 132 88 133 $textEditorClone.width( $textEditor.width() - 22 );134 $textEditorClone.text( $textEditor.val() + ' ' );89 if ( reduce ) { 90 pageYOffset = window.pageYOffset; 135 91 136 hiddenHeight = $textEditorClone.height(); 92 textEditor.style.height = 'auto'; 93 textEditor.style.height = textEditor.scrollHeight + 'px'; 137 94 138 if ( hiddenHeight < autoresizeMinHeight ) { 139 hiddenHeight = autoresizeMinHeight; 95 window.scrollTo( window.pageXOffset, pageYOffset ); 96 } else if ( parseInt( textEditor.style.height, 10 ) < textEditor.scrollHeight ) { 97 textEditor.style.height = textEditor.scrollHeight + 'px'; 140 98 } 141 99 142 if ( h iddenHeight === textEditorHeight ) {143 return;100 if ( height !== textEditor.style.height ) { 101 adjust(); 144 102 } 145 146 $textEditor.height( hiddenHeight );147 148 adjust();149 103 } 150 104 151 105 // We need to wait for TinyMCE to initialize. … … 603 557 $textEditor.css( { 604 558 marginTop: heights.textTopHeight 605 559 } ); 606 607 $textEditorClone.width( contentWrapWidth - 20 - ( borderWidth * 2 ) );608 560 } 609 561 } 610 562 } … … 660 612 }); 661 613 662 614 $textEditor.on( 'focus.editor-expand input.editor-expand propertychange.editor-expand', textEditorResize ); 663 $textEditor.on( 'keyup.editor-expand', textEditorKeyup );664 615 mceBind(); 665 616 666 617 // Adjust when entering/exiting fullscreen mode.