Changeset 4034


Ignore:
Timestamp:
07/31/09 12:29:34 (6 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 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy