Changeset 4034


Ignore:
Timestamp:
07/31/09 12:29:34 (5 years ago)
Author:
garry.yao
Message:

Fixing #4129: [FF]Unable to remove list with Ctrl-A.

Location:
CKEditor/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r4033 r4034  
    224224                <li><a href="http://dev.fckeditor.net/ticket/4164">#4164</a> : Now it is possible to paste text  
    225225                        in Source mode even if forcePasteAsPlainText = true.</li> 
     226                <li><a href="http://dev.fckeditor.net/ticket/4129">#4129</a> : [FF]Unable to remove list with Ctrl-A.</li> 
    226227        </ul> 
    227228        <h3> 
  • CKEditor/trunk/_source/core/dom/element.js

    r4024 r4034  
    642642 
    643643                /** 
    644                  * @param ignoreEmpty Skip empty text nodes. 
    645                  */ 
    646                 getLast : function( ignoreEmpty ) 
    647                 { 
    648                         var $ = this.$.lastChild; 
    649                         if ( ignoreEmpty && $ && ( $.nodeType == CKEDITOR.NODE_TEXT ) 
    650                                         && !CKEDITOR.tools.trim( $.nodeValue ) ) 
    651                                 return new CKEDITOR.dom.node( $ ).getPrevious( true ); 
    652                         else 
    653                                 return $ ? new CKEDITOR.dom.node( $ ) : null; 
     644                 * @param {Function} evaluator Filtering the result node. 
     645                 */ 
     646                getLast : function( evaluator ) 
     647                { 
     648                        var last = this.$.lastChild, 
     649                                retval = last && new CKEDITOR.dom.node( last ); 
     650                        if ( retval && evaluator && !evaluator( retval ) ) 
     651                                retval = retval.getPrevious( evaluator ); 
     652 
     653                        return retval; 
    654654                }, 
    655655 
  • CKEditor/trunk/_source/core/dom/range.js

    r4030 r4034  
    16091609                }, 
    16101610 
     1611                /** 
     1612                 * Get the single node enclosed within the range if there's one. 
     1613                 */ 
     1614                getEnclosedNode : function() 
     1615                { 
     1616                        var walkerRange = this.clone(), 
     1617                                walker = new CKEDITOR.dom.walker( walkerRange ), 
     1618                                isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ), 
     1619                                isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ), 
     1620                                evaluator = function( node ) 
     1621                                { 
     1622                                        return isNotWhitespaces( node ) && isNotBookmarks( node ); 
     1623                                }; 
     1624                        walkerRange.evaluator = evaluator; 
     1625                        var node = walker.next(); 
     1626                        walker.reset(); 
     1627                        return node && node.equals( walker.previous() ) ? node : null; 
     1628                }, 
     1629 
    16111630                getTouchedStartNode : function() 
    16121631                { 
  • CKEditor/trunk/_source/core/dom/walker.js

    r3944 r4034  
    305305                        { 
    306306                                return iterateToLast.call( this, true ); 
     307                        }, 
     308 
     309                        reset : function() 
     310                        { 
     311                                delete this.current; 
     312                                this._ = {}; 
    307313                        } 
    308314 
  • CKEditor/trunk/_source/plugins/domiterator/plugin.js

    r3969 r4034  
    8484                                if ( !this._.lastNode ) 
    8585                                { 
    86                                                 this._.lastNode = range.document.createText( '' ); 
    87                                                 this._.lastNode.insertAfter( lastNode ); 
     86                                        this._.lastNode = this._.docEndMarker = range.document.createText( '' ); 
     87                                        this._.lastNode.insertAfter( lastNode ); 
    8888                                } 
    8989 
     
    240240                                if ( !range ) 
    241241                                { 
     242                                        this._.docEndMarker && this._.docEndMarker.remove(); 
    242243                                        this._.nextNode = null; 
    243244                                        return null; 
  • CKEditor/trunk/_source/plugins/list/plugin.js

    r4022 r4034  
    403403                                        selection.selectRanges( ranges ); 
    404404                                } 
     405                                // Maybe a single range there enclosing the whole list, 
     406                                // turn on the list state manually(#4129). 
     407                                else 
     408                                { 
     409                                        var range = ranges.length == 1 && ranges[ 0 ], 
     410                                                enclosedNode = range && range.getEnclosedNode(); 
     411                                        if ( enclosedNode && enclosedNode.is 
     412                                                && this.type == enclosedNode.getName() ) 
     413                                        { 
     414                                                setState.call( this, editor, CKEDITOR.TRISTATE_ON ); 
     415                                        } 
     416                                } 
    405417                        } 
    406418 
  • CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js

    r3992 r4034  
    191191                // Inserting the padding-br before body if it's preceded by an 
    192192                // unexitable block. 
    193                 var lastNode = body.getLast( true ); 
     193                var lastNode = body.getLast( CKEDITOR.dom.walker.whitespaces( true ) ); 
    194194                if ( lastNode && lastNode.getName && ( lastNode.getName() in nonExitableElementNames ) ) 
    195195                { 
  • CKEditor/trunk/_source/tests/core/dom/element.html

    r4032 r4034  
    542542                        } 
    543543                }, 
     544 
     545                // Test get last non-spaces child node. 
     546                test_getLast : function() 
     547                { 
     548                        var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) ); 
     549                        var span1 = new CKEDITOR.dom.element( 'span' ); 
     550                        element.append( span1 ); 
     551                        element.append( new CKEDITOR.dom.text( ' ' ) ); 
     552                        element.append( new CKEDITOR.dom.text( ' ' ) ); 
     553                        var last = element.getLast( CKEDITOR.dom.walker.whitespaces( true ) ); 
     554                        assert.areSame( span1.$, last.$ ); 
     555                }, 
     556 
    544557 
    545558                name : document.title 
  • CKEditor/trunk/_source/tests/plugins/list/list.html

    r4020 r4034  
    117117                                                        var sel = editor.getSelection(); 
    118118                                                        sel.selectRanges( [ range ] ); 
     119                                                        editor.selectionChange(); 
     120 
    119121                                                        // Waiting for 'comand state' effected. 
    120122                                                        this.wait( function(){ 
     
    149151                                                        var sel = editor.getSelection(); 
    150152                                                        sel.selectRanges( [ range ] ); 
     153                                                        editor.selectionChange(); 
    151154 
    152155                                                        // Waiting for 'comand state' effected. 
     
    182185                                                        var sel = editor.getSelection(); 
    183186                                                        sel.selectRanges( [ range ] ); 
     187                                                        editor.selectionChange(); 
    184188 
    185189                                                        // Waiting for 'comand state' effected. 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy