Changeset 6334


Ignore:
Timestamp:
01/18/11 17:29:29 (3 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