WordPress.org

Make WordPress Core

Ticket #31441: 31441.30.patch

File 31441.30.patch, 1.6 KB (added by iseulde, 5 years ago)
  • src/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js

     
    1313( function( tinymce, setTimeout ) {
    1414        tinymce.PluginManager.add( 'wptextpattern', function( editor ) {
    1515                var VK = tinymce.util.VK,
    16                         canUndo = false,
    1716                        spacePatterns = [
    1817                                { regExp: /^[*-]\s/, cmd: 'InsertUnorderedList' },
    1918                                { regExp: /^1[.)]\s/, cmd: 'InsertOrderedList' }
     
    2625                                { start: '######', format: 'h6' },
    2726                                { start: '>', format: 'blockquote' }
    2827                        ],
    29                         refNode, refPattern;
     28                        canUndo, refNode, refPattern;
    3029
    3130                editor.on( 'selectionchange', function() {
    32                         canUndo = false;
     31                        canUndo = null;
    3332                } );
    3433
    3534                editor.on( 'keydown', function( event ) {
    36                         if ( canUndo && ( event.keyCode === VK.BACKSPACE || event.keyCode === 27 /* ESCAPE */ ) ) {
     35                        if ( ( canUndo && event.keyCode === 27 /* ESCAPE */ ) || ( canUndo === 'space' && event.keyCode === VK.BACKSPACE ) ) {
    3736                                editor.undoManager.undo();
    3837                                event.preventDefault();
    3938                        }
     
    115114
    116115                                // We need to wait for native events to be triggered.
    117116                                setTimeout( function() {
    118                                         canUndo = true;
     117                                        canUndo = 'space';
    119118                                } );
    120119
    121120                                return false;
     
    168167                                        editor.formatter.apply( refPattern.format, {}, refNode );
    169168                                        refNode.deleteData( 0, refPattern.start.length );
    170169                                } );
     170
     171                                // We need to wait for native events to be triggered.
     172                                setTimeout( function() {
     173                                        canUndo = 'enter';
     174                                } );
    171175                        }
    172176
    173177                        refNode = null;