Ticket #9063: 9063.patch

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

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    139139                                // Apply indenting or outdenting on the array.
    140140                                var baseIndent = listArray[ lastItem.getCustomData( 'listarray_index' ) ].indent;
    141141                                for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ )
    142                                 {
    143142                                        listArray[ i ].indent += indentOffset;
    144                                         // Make sure the newly created sublist get a brand-new element of the same type. (#5372)
    145                                         var listRoot = listArray[ i ].parent;
    146                                         listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() );
    147                                 }
    148143
    149144                                for ( i = lastItem.getCustomData( 'listarray_index' ) + 1 ;
    150145                                                i < listArray.length && listArray[i].indent > baseIndent ; i++ )
  • _source/plugins/list/plugin.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    3131                }
    3232        }
    3333
     34        // Inheirt inline styles from another element.
     35        function inheirtInlineStyles( parent, el )
     36        {
     37                var style = parent.getAttribute( 'style' );
     38
     39                // Put parent styles before child styles.
     40                style && el.setAttribute( 'style',
     41                        style.replace( /([^;])$/, '$1;' ) +
     42                        ( el.getAttribute( 'style' ) || '' ) );
     43        }
     44
    3445        CKEDITOR.plugins.list = {
    3546                /*
    3647                 * Convert a DOM list tree into a data structure that is easier to
     
    108119                                paragraphName = ( paragraphMode == CKEDITOR.ENTER_P ? 'p' : 'div' );
    109120                        while ( 1 )
    110121                        {
    111                                 var item = listArray[ currentIndex ];
     122                                var item = listArray[ currentIndex ],
     123                                        itemParent = item.parent;
    112124
    113125                                orgDir = item.element.getDirection( 1 );
    114126
     
    116128                                {
    117129                                        if ( !rootNode || listArray[ currentIndex ].parent.getName() != rootNode.getName() )
    118130                                        {
    119                                                 rootNode = listArray[ currentIndex ].parent.clone( false, 1 );
     131                                                // Make sure the newly created sub list NOT inheriting styles from parent. (#5372)
     132                                                rootNode = baseIndex ? doc.createElement( itemParent.getName() ) : itemParent.clone( false, 1 );
    120133                                                dir && rootNode.setAttribute( 'dir', dir );
    121134                                                retval.append( rootNode );
    122135                                        }
     
    146159                                }
    147160                                else if ( item.indent == -1 && !baseIndex && item.grandparent )
    148161                                {
     162                                        // We're leaving this parent list, inherit it's inline styles.
     163                                        var listNode = itemParent.clone();
     164                                        if ( listNode.hasAttribute( 'style' ) )
     165                                        {
     166                                                listNode.removeStyle( 'list-style-type' );
     167                                                inheirtInlineStyles( listNode, item.element );
     168                                        }
     169
    149170                                        if ( listNodeNames[ item.grandparent.getName() ] )
    150171                                                currentListItem = item.element.clone( false, true );
    151172                                        else
     
    171192                                                        if ( dirLoose && !child.getDirection() )
    172193                                                                child.setAttribute( 'dir', orgDir );
    173194
    174                                                         // Merge into child styles.
    175                                                         style && child.setAttribute( 'style',
    176                                                                                  style.replace( /([^;])$/, '$1;') +
    177                                                                                  ( child.getAttribute( 'style' ) || '' ) );
     195                                                        inheirtInlineStyles( li, child );
    178196
    179197                                                        className && child.addClass( className );
    180198                                                }
© 2003 – 2020 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy