Ticket #28913: 28913.6.patch
File 28913.6.patch, 4.4 KB (added by , 11 years ago) |
---|
-
src/wp-includes/js/tinymce/plugins/wpview/plugin.js
101 101 editor.nodeChanged(); 102 102 } 103 103 104 function removeView( view ) { 105 // TODO: trigger an event or run a clean up function. 106 // Maybe `jQuery( view ).trigger( 'remove' );`? 107 editor.undoManager.transact( function() { 108 handleEnter( view ); 109 editor.dom.remove( view ); 110 }); 111 } 112 104 113 function select( viewNode ) { 105 114 var clipboard, 106 115 dom = editor.dom; … … 185 194 return; 186 195 } 187 196 197 if ( selected ) { 198 removeView( selected ); 199 } 200 188 201 if ( ! event.initial ) { 189 202 wp.mce.views.unbind( editor ); 190 203 } … … 293 306 if ( editor.dom.hasClass( event.target, 'edit' ) ) { 294 307 wp.mce.views.edit( view ); 295 308 } else if ( editor.dom.hasClass( event.target, 'remove' ) ) { 296 editor.dom.remove( view );309 removeView( view ); 297 310 } 298 311 } 299 312 … … 340 353 dom = editor.dom, 341 354 selection = editor.selection, 342 355 node, view, cursorBefore, cursorAfter, 343 range, clonedRange, tempRange , remove;356 range, clonedRange, tempRange; 344 357 345 358 if ( selected ) { 346 // Let key presses that involve the command or control keys through. 347 // Also, let any of the F# keys through. 348 if ( event.metaKey || event.ctrlKey || ( key >= 112 && key <= 123 ) ) { 349 // But remove the view when cmd/ctrl + x/backspace are pressed. 350 if ( ( event.metaKey || event.ctrlKey ) && ( key === 88 || key === VK.BACKSPACE ) ) { 351 // We'll remove a cut view on keyup, otherwise the browser can't copy the content. 352 if ( key === 88 ) { 353 toRemove = selected; 354 } else { 355 editor.dom.remove( selected ); 356 } 359 // Ignore key presses that involve the command or control key, but continue when in combination with backspace or v. 360 // Also ignore the F# keys. 361 if ( ( ( event.metaKey || event.ctrlKey ) && key !== VK.BACKSPACE && key !== 86 ) || ( key >= 112 && key <= 123 ) ) { 362 // Remove the view when pressing cmd/ctrl+x on keyup, otherwise the browser can't copy the content. 363 if ( ( event.metaKey || event.ctrlKey ) && key === 88 ) { 364 toRemove = selected; 357 365 } 358 366 return; 359 367 } … … 399 407 event.preventDefault(); 400 408 // Ignore keys that don't insert anything. 401 409 } else if ( ( key > 47 || VK.SPACEBAR || key === VK.ENTER || key === VK.DELETE || key === VK.BACKSPACE ) && key !== 144 && key !== 145 ) { 402 editor.undoManager.transact( function() { 403 remove = selected; 404 handleEnter( selected ); 405 dom.remove( remove ); 406 }); 410 removeView( selected ); 407 411 408 412 if ( key === VK.ENTER || key === VK.DELETE || key === VK.BACKSPACE ) { 409 413 event.preventDefault(); … … 437 441 } 438 442 } 439 443 440 // Make sure we don't eat any content. 441 if ( event.keyCode === VK.BACKSPACE ) { 442 if ( editor.dom.isEmpty( node ) ) { 443 if ( view = getView( node.previousSibling ) ) { 444 if ( ! view ) { 445 // Make sure we don't eat any content. 446 if ( event.keyCode === VK.BACKSPACE ) { 447 if ( editor.dom.isEmpty( node ) ) { 448 if ( view = getView( node.previousSibling ) ) { 449 setViewCursor( false, view ); 450 editor.dom.remove( node ); 451 event.preventDefault(); 452 } 453 } else if ( ( range = selection.getRng() ) && 454 range.startOffset === 0 && 455 range.endOffset === 0 && 456 ( view = getView( node.previousSibling ) ) ) { 444 457 setViewCursor( false, view ); 445 editor.dom.remove( node );446 458 event.preventDefault(); 447 return;448 459 } 449 } else if ( ( range = selection.getRng() ) &&450 range.startOffset === 0 &&451 range.endOffset === 0 &&452 ( view = getView( node.previousSibling ) ) ) {453 setViewCursor( false, view );454 event.preventDefault();455 return;456 460 } 457 }458 459 if ( ! view ) {460 461 return; 461 462 } 462 463 … … 515 516 select( view ); 516 517 event.preventDefault(); 517 518 } else if ( cursorAfter && key === VK.BACKSPACE ) { 518 editor.undoManager.transact( function() { 519 handleEnter( view ); 520 dom.remove( view ); 521 }); 519 removeView( view ); 522 520 event.preventDefault(); 523 521 } else if ( cursorAfter ) { 524 522 handleEnter( view ); … … 534 532 535 533 editor.on( 'keyup', function() { 536 534 if ( toRemove ) { 537 editor.dom.remove( toRemove );535 removeView( toRemove ); 538 536 toRemove = false; 539 537 } 540 538 });