Ticket #28328: 28328.17.patch
File 28328.17.patch, 2.6 KB (added by , 11 years ago) |
---|
-
src/wp-admin/js/editor-expand.js
122 122 }, 200 ); 123 123 } ); 124 124 125 editor.on( 'keyup', function() { 126 var offset = getCursorOffset(), 125 // Make sure the cursor is always visible. 126 // This is not only necessary to keep the cursor between the toolbars, 127 // but also to scroll the window when the cursor moves out of the viewport to a wpview. 128 // Setting a buffer > 0 will prevent the browser default. 129 // Some browsers will scroll to the middle, 130 // others to the top/bottom of the *window* when moving the cursor out of the viewport. 131 editor.on( 'keyup', function( event ) { 132 var VK = tinymce.util.VK, 133 key = event.keyCode, 134 offset = getCursorOffset(), 127 135 windowHeight = $window.height(), 136 buffer = 10, 128 137 cursorTop, cursorBottom, editorTop, editorBottom; 129 138 130 139 if ( ! offset ) { … … 133 142 134 143 cursorTop = offset.top + editor.getContentAreaContainer().getElementsByTagName( 'iframe' )[0].getBoundingClientRect().top; 135 144 cursorBottom = cursorTop + offset.height; 145 cursorTop = cursorTop - buffer; 146 cursorBottom = cursorBottom + buffer; 136 147 editorTop = $adminBar.outerHeight() + $tools.outerHeight() + $visualTop.outerHeight(); 137 editorBottom = $window.height()- $bottom.outerHeight();148 editorBottom = windowHeight - $bottom.outerHeight(); 138 149 139 if ( cursorTop < editorTop || cursorBottom > editorBottom ) { 140 window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - windowHeight / 2 ); 150 if ( cursorTop < editorTop && ( key === VK.UP || key === VK.LEFT ) ) { 151 window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - editorTop ); 152 } else if ( cursorBottom > editorBottom ) { 153 window.scrollTo( window.pageXOffset, cursorBottom + window.pageYOffset - editorBottom ); 141 154 } 142 155 } ); 143 156 … … 145 158 var selection = editor.selection, 146 159 node = selection.getNode(), 147 160 range = selection.getRng(), 148 view, clone, right,offset;161 view, clone, offset; 149 162 150 163 if ( tinymce.Env.ie && tinymce.Env.ie < 9 ) { 151 164 return; … … 159 172 if ( clone.startContainer.length > 1 ) { 160 173 if ( clone.startContainer.length > clone.endOffset ) { 161 174 clone.setEnd( clone.startContainer, clone.endOffset + 1 ); 162 right = true;163 175 } else { 164 176 clone.setStart( clone.startContainer, clone.endOffset - 1 ); 165 177 } … … 175 187 } 176 188 177 189 if ( ! offset.height ) { 178 return false;190 return; 179 191 } 180 192 181 193 return offset;