WordPress.org

Make WordPress Core

Ticket #6331: 6331.6.diff

File 6331.6.diff, 1.1 KB (added by ericlewis, 5 years ago)
  • src/wp-includes/js/tinymce/plugins/wordpress/plugin.js

     
    192192        });
    193193
    194194        editor.addCommand( 'WP_Code', function() {
    195                 editor.formatter.toggle('code');
     195                var range = editor.selection.getRng();
     196                var startContainerFirstBlockParent = editor.dom.getParent(range.startContainer, function(node) {
     197                        return editor.dom.isBlock(node);
     198                });
     199                var endContainerFirstBlockParent = editor.dom.getParent(range.endContainer, function(node) {
     200                        return editor.dom.isBlock(node);
     201                });
     202                var selectionSpansOverBlocks = startContainerFirstBlockParent !== endContainerFirstBlockParent;
     203                var selectionSpansEntireBlock = startContainerFirstBlockParent.textContent === editor.selection.getContent({format: 'text'});
     204                if ( selectionSpansOverBlocks || selectionSpansEntireBlock ) {
     205                        editor.formatter.toggle('pre');
     206                } else {
     207                        editor.formatter.toggle('code');
     208                }
    196209        });
    197210
    198211        editor.addCommand( 'WP_Page', function() {