Ticket #9384: 9384_2.patch

File 9384_2.patch, 2.5 KB (added by Garry Yao, 7 years ago)
  • _source/core/dom/walker.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    413413        {
    414414                return function( node )
    415415                {
    416                         var isWhitespace = node && ( node.type == CKEDITOR.NODE_TEXT )
    417                                                         && !CKEDITOR.tools.trim( node.getText() );
     416                        var isWhitespace;
     417                        if ( node && node.type == CKEDITOR.NODE_TEXT )
     418                        {
     419                                // whitespace, as well as the text cursor filler node we used in Webkit. (#9384)
     420                                isWhitespace = !CKEDITOR.tools.trim( node.getText() ) ||
     421                                        CKEDITOR.env.webkit && node.getText() == '\u200b';
     422                        }
     423
    418424                        return !! ( isReject ^ isWhitespace );
    419425                };
    420426        };
  • _source/core/dom/range.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    350350        function getCheckStartEndBlockEvalFunction( isStart )
    351351        {
    352352                var skipBogus = false,
     353                        whitespaces = CKEDITOR.dom.walker.whitespaces(),
    353354                        bookmarkEvaluator = CKEDITOR.dom.walker.bookmark( true ),
    354355                        isBogus = CKEDITOR.dom.walker.bogus();
    355356
    356357                return function( node )
    357358                {
    358                         // First ignore bookmark nodes.
    359                         if ( bookmarkEvaluator( node ) )
     359                        // First skip empty nodes.
     360                        if ( bookmarkEvaluator( node ) || whitespaces( node ) )
    360361                                return true;
    361362
    362363                        // Skip the bogus node at the end of block.
     
    388389        // text node and non-empty elements unless it's being bookmark text.
    389390        function elementBoundaryEval( checkStart )
    390391        {
     392                var whitespaces = CKEDITOR.dom.walker.whitespaces(),
     393                        bookmark = CKEDITOR.dom.walker.bookmark( 1 );
     394
    391395                return function( node )
    392396                {
     397                        // First skip empty nodes.
     398                        if ( bookmark( node ) || whitespaces( node ) )
     399                                return true;
     400
    393401                        // Tolerant bogus br when checking at the end of block.
    394402                        // Reject any text node unless it's being bookmark
    395403                        // OR it's spaces.
    396404                        // Reject any element unless it's being invisible empty. (#3883)
    397                         return !checkStart && isBogus( node ) ||
    398                                         ( node.type == CKEDITOR.NODE_TEXT ?
    399                                            !CKEDITOR.tools.trim( node.getText() ) || !!node.getParent().data( 'cke-bookmark' )
    400                                            : node.getName() in CKEDITOR.dtd.$removeEmpty );
     405                        return !checkStart && isBogus( node ) || node.getName() in CKEDITOR.dtd.$removeEmpty;
    401406                };
    402407        }
    403408
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy