diff --git src/wp-includes/js/tinymce/plugins/wpview/plugin.js src/wp-includes/js/tinymce/plugins/wpview/plugin.js
index 9327859..6892249 100644
|
|
|
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 109 | 109 | |
| 110 | 110 | dom.unbind( selected, 'beforedeactivate focusin focusout click mouseup', _stop ); |
| 111 | 111 | dom.removeClass( selected, 'selected' ); |
| 112 | | |
| 113 | | editor.selection.select( selected.nextSibling ); |
| 114 | | editor.selection.collapse(); |
| 115 | | |
| 116 | 112 | } |
| 117 | 113 | |
| 118 | 114 | selected = null; |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 176 | 172 | x = event.clientX; |
| 177 | 173 | y = event.clientY; |
| 178 | 174 | |
| | 175 | // Detect events above or to the left if the first node is a wpview |
| 179 | 176 | if ( isView( firstNode ) && ( ( x < firstNode.offsetLeft && y < ( firstNode.offsetHeight - scrollTop ) ) || |
| 180 | 177 | y < firstNode.offsetTop ) ) { |
| 181 | | // detect events above or to the left of the first view |
| 182 | 178 | |
| 183 | 179 | padNode = createPadNode(); |
| 184 | 180 | body.insertBefore( padNode, firstNode ); |
| | 181 | |
| | 182 | // Detect events to the right and below the last view |
| 185 | 183 | } else if ( isView( lastNode ) && ( x > ( lastNode.offsetLeft + lastNode.offsetWidth ) || |
| 186 | 184 | ( ( scrollTop + y ) - ( lastNode.offsetTop + lastNode.offsetHeight ) ) > 0 ) ) { |
| 187 | | // detect events to the right and below the last view |
| 188 | 185 | |
| 189 | 186 | padNode = createPadNode(); |
| 190 | 187 | body.appendChild( padNode ); |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 305 | 302 | editor.on( 'keydown', function( event ) { |
| 306 | 303 | var keyCode = event.keyCode, |
| 307 | 304 | body = editor.getBody(), |
| 308 | | view, padNode; |
| | 305 | view, padNode, walker, node; |
| 309 | 306 | |
| 310 | 307 | // If a view isn't selected, let the event go on its merry way. |
| 311 | 308 | if ( ! selected ) { |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 342 | 339 | editor.selection.setCursorLocation( body.firstChild, 0 ); |
| 343 | 340 | // Handle default case |
| 344 | 341 | } else { |
| 345 | | editor.selection.select( view.previousSibling, true ); |
| | 342 | walker = new TreeWalker( view, body ); |
| | 343 | node = walker.prev( true ); |
| | 344 | editor.selection.select( node, true ); |
| 346 | 345 | editor.selection.collapse(); |
| 347 | 346 | } |
| 348 | 347 | } else if ( keyCode === VK.RIGHT || keyCode === VK.DOWN ) { |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 357 | 356 | editor.selection.setCursorLocation( body.lastChild, 0 ); |
| 358 | 357 | // Handle default case where the next node is a non-wpview |
| 359 | 358 | } else { |
| 360 | | editor.selection.setCursorLocation( view.nextSibling.firstChild, 0 ); |
| | 359 | walker = new TreeWalker( view, body ); |
| | 360 | node = walker.next( true ); |
| | 361 | editor.selection.select( node, true ); |
| | 362 | editor.selection.collapse( true ); |
| 361 | 363 | } |
| 362 | 364 | } else if ( keyCode === VK.DELETE || keyCode === VK.BACKSPACE ) { |
| 363 | 365 | // If delete or backspace is pressed, delete the view. |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 372 | 374 | var keyCode = event.keyCode, |
| 373 | 375 | range = editor.selection.getRng(), |
| 374 | 376 | body = editor.getBody(), |
| | 377 | walker, |
| | 378 | view, |
| 375 | 379 | node; |
| 376 | 380 | |
| 377 | 381 | if ( ! range.collapsed || event.metaKey || event.ctrlKey ) { |
| 378 | 382 | return; |
| 379 | 383 | } |
| 380 | 384 | |
| 381 | | if ( keyCode === VK.LEFT || keyCode === VK.UP ) { |
| 382 | | node = range.startContainer.parentNode === body ? range.startContainer : range.startContainer.parentNode; |
| | 385 | if ( ( keyCode === VK.LEFT || keyCode === VK.UP ) && range.startOffset === 0 ) { |
| | 386 | walker = new TreeWalker( range.startContainer, body ); |
| | 387 | node = walker.prev(); |
| 383 | 388 | // The caret is directly after a wpview |
| 384 | | if ( range.startOffset === 0 && isView( node.previousSibling ) ) { |
| 385 | | select( node.previousSibling ); |
| 386 | | event.preventDefault(); |
| | 389 | if ( isView( range.startContainer.previousSibling ) ) { |
| | 390 | view = range.startContainer.previousSibling; |
| | 391 | } else if ( isView( node ) ) { |
| | 392 | view = node; |
| 387 | 393 | } |
| 388 | | } else if ( keyCode === VK.RIGHT || keyCode === VK.DOWN ) { |
| 389 | | node = range.startContainer.parentNode === body ? range.startContainer : range.startContainer.parentNode; |
| | 394 | } else if ( ( keyCode === VK.RIGHT || keyCode === VK.DOWN ) && |
| | 395 | ( ( range.startOffset === 0 && ! range.endContainer.length ) || ( range.startOffset === range.endContainer.length ) ) ) { |
| | 396 | |
| | 397 | walker = new TreeWalker( range.endContainer, body ); |
| | 398 | node = walker.next(); |
| | 399 | |
| 390 | 400 | // The caret is directly before a wpview |
| 391 | | if ( ( ( range.startOffset === 0 && ! range.endContainer.length ) || ( range.startOffset === range.endContainer.length ) ) && |
| 392 | | isView( node.nextSibling ) ) { |
| 393 | | select( node.nextSibling ); |
| 394 | | event.preventDefault(); |
| | 401 | if ( isView( range.endContainer.nextSibling ) ) { |
| | 402 | view = range.endContainer.nextSibling; |
| | 403 | } else if ( isView( node ) ) { |
| | 404 | view = node; |
| 395 | 405 | } |
| 396 | 406 | } |
| | 407 | |
| | 408 | if ( view ) { |
| | 409 | select( view ); |
| | 410 | event.preventDefault(); |
| | 411 | } |
| 397 | 412 | }); |
| 398 | 413 | |
| 399 | 414 | editor.on( 'keyup', function( event ) { |
| … |
… |
tinymce.PluginManager.add( 'wpview', function( editor ) { |
| 423 | 438 | // Allow an initial element in the document to be removed when it is before a view |
| 424 | 439 | if ( body.firstChild === range.startContainer && range.collapsed === true && |
| 425 | 440 | isView( range.startContainer.nextSibling ) && range.startOffset === 0 ) { |
| 426 | | |
| 427 | 441 | editor.dom.remove( range.startContainer ); |
| 428 | 442 | } |
| 429 | 443 | } |