Ticket #8087: 8087_3.patch

File 8087_3.patch, 2.7 KB (added by Garry Yao, 8 years ago)
  • _source/plugins/indent/plugin.js

     
    8080
    8181        function isListItem( node )
    8282        {
    83                 return node.type = CKEDITOR.NODE_ELEMENT && node.is( 'li' );
     83                return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );
    8484        }
    8585
    8686        indentCommand.prototype = {
  • _source/plugins/list/plugin.js

     
    1616                bookmarks = CKEDITOR.dom.walker.bookmark(),
    1717                nonEmpty = function( node ){ return !( whitespaces( node ) || bookmarks( node ) ); };
    1818
     19        function inheritedDirection( element )
     20        {
     21                var dir;
     22                while ( element && !( dir = element.getDirection() ) )
     23                {
     24                        element = element.getParent();
     25                }
     26                return dir;
     27        }
     28       
     29        function cleanUpDirection( element, rootDir )
     30        {
     31                var dir;
     32                if ( dir = element.getDirection() )
     33                {
     34                        if ( dir == ( inheritedDirection( element.getParent() ) || rootDir ) )
     35                                element.removeAttribute( 'dir' );
     36                }
     37        }
     38
    1939        CKEDITOR.plugins.list = {
    2040                /*
    2141                 * Convert a DOM list tree into a data structure that is easier to
     
    107127
    108128                                        if ( orgDir != rootNode.getDirection( 1 ) )
    109129                                                currentListItem.setAttribute( 'dir', orgDir );
    110                                         else
    111                                                 currentListItem.removeAttribute( 'dir' );
    112130
    113131                                        for ( var i = 0 ; i < item.contents.length ; i++ )
    114132                                                currentListItem.append( item.contents[i].clone( 1, 1 ) );
     
    155173                                        {
    156174                                                if ( item.grandparent.getDirection( 1 ) != orgDir )
    157175                                                        currentListItem.setAttribute( 'dir', orgDir );
    158                                                 else
    159                                                         currentListItem.removeAttribute( 'dir' );
    160176                                        }
    161177
    162178                                        for ( i = 0 ; i < item.contents.length ; i++ )
     
    208224                                        break;
    209225                        }
    210226
    211                         // Clear marker attributes for the new list tree made of cloned nodes, if any.
    212227                        if ( database )
    213228                        {
    214                                 var currentNode = retval.getFirst();
     229                                var currentNode = retval.getFirst(),
     230                                        listRoot = listArray[ 0 ].parent;
     231
    215232                                while ( currentNode )
    216233                                {
    217234                                        if ( currentNode.type == CKEDITOR.NODE_ELEMENT )
     235                                        {
     236                                                // Clear marker attributes for the new list tree made of cloned nodes, if any.
    218237                                                CKEDITOR.dom.element.clearMarkers( database, currentNode );
     238
     239                                                // Clear redundant direction attribute specified on list items.
     240                                                if ( currentNode.getName() in CKEDITOR.dtd.$listItem )
     241                                                        cleanUpDirection( currentNode, listRoot.getDirection( 1 ) );
     242                                        }
     243
    219244                                        currentNode = currentNode.getNextSourceNode();
    220245                                }
    221246                        }
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy