Changeset 6334


Ignore:
Timestamp:
01/18/2011 05:29:29 PM (4 years ago)
Author:
garry.yao
Message:

#6432: Introdue range::fixListRange and utilize it in range::deleteContents.

Location:
CKEditor/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r6333 r6334  
    9898                <li><a href="http://dev.ckeditor.com/ticket/6735">#6735</a> :  Inaccurate read-only selection detection.</li>
    9999                <li><a href="http://dev.ckeditor.com/ticket/6728">#6728</a> :  [BIDI] Change direction doesn't work with list nested inside blockquote.</li>
     100                <li><a href="http://dev.ckeditor.com/ticket/6432">#6432</a> :  Insert table over fully selected list result in JavaScript error.</li>
    100101                <li>Updated the following language files:<ul>
    101102                        <li><a href="http://dev.ckeditor.com/ticket/6981">#6981</a> : English (GB);</li>
  • CKEditor/trunk/_source/core/dom/range.js

    r6329 r6334  
    374374                                return;
    375375
     376                        this.fixListRange();
    376377                        execContentsAction( this, 0 );
    377378                },
     
    19101911
    19111912                        return container.getChild( this.endOffset - 1 ) || container ;
    1912                 }
     1913                },
     1914
     1915                // Fix list selection range where entire range is selected from the inner side.
     1916                // <ul><li>[...]</li></ul> =>   [<ul><li>...</li></ul>]
     1917                fixListRange : (function()
     1918                {
     1919                        function moveListBoundary( fixEnd )
     1920                        {
     1921                                var listItem, listRoot;
     1922                                if ( ( listItem = this[ fixEnd ? 'endContainer' : 'startContainer' ].getAscendant( 'li', 1 ) )
     1923                                                && this.checkBoundaryOfElement( listItem, fixEnd ? CKEDITOR.END : CKEDITOR.START )
     1924                                                && ( listRoot = listItem.getParent() )
     1925                                                && ( listItem.equals( listRoot[ fixEnd ? 'getLast' : 'getFirst' ]( CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT ) ) ) )
     1926                                                // Make the fix only when both sides are in same situation.
     1927                                                && ( fixEnd || moveListBoundary.call( this, 1 ) ) )
     1928                                {
     1929                                        this[ fixEnd ? 'setEndAt' : 'setStartAt' ]( listRoot, fixEnd ?
     1930                                                CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START );
     1931                                        return true;
     1932                                }
     1933                        }
     1934
     1935                        return function()
     1936                        {
     1937                                moveListBoundary.call( this );
     1938                        };
     1939                })()
    19131940        };
    19141941})();
  • CKEditor/trunk/_source/core/dom/walker.js

    r6241 r6334  
    422422        };
    423423
     424        CKEDITOR.dom.walker.nodeType = function( type, isReject )
     425        {
     426                return function( node )
     427                {
     428                        return !! ( isReject ^ ( node.type == type ) );
     429                };
     430        };
     431
    424432        var tailNbspRegex = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
    425433                isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( 1 ),
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy