Ticket #36459: 36459.patch
File 36459.patch, 3.3 KB (added by , 9 years ago) |
---|
-
src/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js
41 41 var chars = []; 42 42 43 43 tinymce.each( inlinePatterns, function( pattern ) { 44 tinymce.each( ( pattern. start + pattern.end ).split( '' ), function( c ) {44 tinymce.each( ( pattern.end ).split( '' ), function( c ) { 45 45 if ( tinymce.inArray( chars, c ) === -1 ) { 46 46 chars.push( c ); 47 47 } … … 65 65 }, true ); 66 66 67 67 editor.on( 'keyup', function( event ) { 68 var did_space = false; 68 69 if ( event.keyCode === VK.SPACEBAR && ! event.ctrlKey && ! event.metaKey && ! event.altKey ) { 69 space(); 70 } else if ( event.keyCode > 47 && ! ( event.keyCode >= 91 && event.keyCode <= 93 ) ) { 70 did_space = space(); 71 } 72 if ( ! did_space && ! ( event.keyCode >= 1 && event.keyCode <= 31 ) && ! (event.keyCode >= 91 && event.keyCode <= 93 ) ) { 71 73 inline(); 72 74 } 73 75 } ); … … 87 89 } 88 90 89 91 if ( tinymce.inArray( chars, node.data.charAt( offset - 1 ) ) === -1 ) { 90 return; 92 // Allow for one character of type ahead. 93 if ( --offset <= 1 || tinymce.inArray( chars, node.data.charAt( offset - 1 ) ) === -1 ) { 94 return; 95 } 91 96 } 92 97 93 function find Start( node ) {98 function findEnd( node ) { 94 99 var i = inlinePatterns.length; 95 var offset;100 var index; 96 101 97 102 while ( i-- ) { 98 103 pattern = inlinePatterns[ i ]; 99 offset = node.data.indexOf( pattern.end );104 index = node.data.lastIndexOf( pattern.end ); 100 105 101 if ( offset !== -1) {102 return offset;106 if ( index !== -1 && index === offset - pattern.end.length ) { 107 return index; 103 108 } 104 109 } 105 110 } 106 111 107 startOffset = findStart( node ); 108 endOffset = node.data.lastIndexOf( pattern.end ); 109 110 if ( startOffset === endOffset || endOffset === -1 ) { 112 endOffset = findEnd( node ); 113 if ( ! endOffset ) { 111 114 return; 112 115 } 116 startOffset = node.data.substr( 0, endOffset ).lastIndexOf( pattern.start ); 117 if ( startOffset === -1 ) { 118 return; 119 } 113 120 114 121 if ( endOffset - startOffset <= pattern.start.length ) { 115 122 return; 116 123 } 117 124 118 if ( node.data.slice( startOffset + pattern.start.length, endOffset ).indexOf( pattern.start.slice( 0, 1 ) ) !== -1 ) { 125 // Ignore if in pattern node already. 126 if ( node.parentNode.nodeName.toLowerCase() === pattern.format ) { 119 127 return; 120 128 } 121 129 130 // Ignore if a single white space or empty as node won't be created by editor.formatter.apply() below (same test as tinymce/Formatter/isWhiteSpaceNode()). 131 if ( /^([\t \r\n]+|)$/.test( node.data.slice( startOffset + pattern.start.length, endOffset ) ) ) { 132 return; 133 } 134 122 135 format = editor.formatter.get( pattern.format ); 123 136 124 137 if ( format && format[0].inline ) { … … 192 205 var rng = editor.selection.getRng(), 193 206 node = rng.startContainer, 194 207 parent, 195 text; 208 text, 209 ret = false; 196 210 197 211 if ( ! node || firstTextNode( node ) !== node ) { 198 return ;212 return ret; 199 213 } 200 214 201 215 parent = node.parentNode; … … 225 239 setTimeout( function() { 226 240 canUndo = 'space'; 227 241 } ); 242 ret = true; 228 243 229 244 return false; 230 245 } ); 246 247 return ret; 231 248 } 232 249 233 250 function enter() {