Ticket #7170: 7170.patch

File 7170.patch, 2.2 KB (added by Garry Yao, 11 years ago)
  • _source/plugins/enterkey/plugin.js

     
    272272
    273273                                isPre = ( startBlockTag == 'pre' );
    274274
     275                                // Old IEs prefer text node as line breaks.
     276                                var useTextBreak = isPre && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat );
     277
    275278                                // Gecko prefers <br> as line-break inside <pre> (#4711).
    276                                 if ( isPre && !CKEDITOR.env.gecko )
     279                                if ( useTextBreak )
    277280                                        lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
    278281                                else
    279282                                        lineBreak = doc.createElement( 'br' );
     
    281284                                range.deleteContents();
    282285                                range.insertNode( lineBreak );
    283286
    284                                 // IE has different behavior regarding position.
    285                                 if ( CKEDITOR.env.ie )
     287                                // Text line-breaks has different behavior regarding position.
     288                                if ( useTextBreak )
    286289                                        range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END );
    287290                                else
    288291                                {
     
    292295                                        doc.createText( '\ufeff' ).insertAfter( lineBreak );
    293296
    294297                                        // If we are at the end of a block, we must be sure the bogus node is available in that block.
    295                                         if ( isEndOfBlock )
     298                                        if ( isEndOfBlock && !isPre )
    296299                                                lineBreak.getParent().appendBogus();
    297300
    298301                                        // Now we can remove the text node contents, so the caret doesn't
  • _source/core/htmlparser/fragment.js

     
    383383                        // text contents.
    384384                        if ( !inPre )
    385385                                text = text.replace( /[\t\r\n ]{2,}|[\t\r\n]/g, ' ' );
     386                        // Use <br /> instead of text line-breaks in pre-formatted block when possible.
     387                        else if ( !( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
     388                        {
     389                                // The first line-break following open tag is considered as formatter in <pre>.
     390                                if ( !currentNode._.hasInlineStarted )
     391                                        text = text.replace( /^(\r\n|\n)/g, '' );
    386392
     393                                text = text.replace( /\r\n|\n/g, '<br />' );
     394                        }
     395
    387396                        currentNode.add( new CKEDITOR.htmlParser.text( text ) );
    388397                };
    389398
© 2003 – 2021 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy