Ticket #3283: 3283_2.patch

File 3283_2.patch, 2.0 KB (added by Garry Yao, 11 years ago)
  • _source/core/dom/node.js

     
    286286
    287287                getNextSourceNode : function( startFromSibling, nodeType )
    288288                {
    289                         var $ = this.$;
    290 
    291                         var node = ( !startFromSibling && $.firstChild ) ?
    292                                 $.firstChild :
    293                                 $.nextSibling;
    294 
    295                         var parent;
     289                        var walker = new CKEDITOR.dom.domWalker( this ),
     290                                node= walker.forward( function( evt ){
    296291
    297                         while ( !node && ( parent = ( parent || $ ).parentNode ) )
    298                                 node = parent.nextSibling;
    299 
    300                         if ( !node )
    301                                 return null;
    302 
    303                         if ( nodeType && nodeType != node.nodeType )
    304                                 return arguments.callee.call( { $ : node }, false, nodeType );
    305 
    306                         return new CKEDITOR.dom.node( node );
     292                                        var transitionType = evt.data.type,
     293                                                to = evt.data.to;
     294                                        if( startFromSibling? transitionType == 'sibling' :
     295                                                nodeType? to.type == nodeType : true )
     296                                                this.stop();
     297                        } ).node;
     298                       
     299                        return node;
    307300                },
    308301
    309302                getPreviousSourceNode : function( startFromSibling, nodeType )
     
    308301
    309302                getPreviousSourceNode : function( startFromSibling, nodeType )
    310303                {
    311                         var $ = this.$;
    312 
    313                         var node = ( !startFromSibling && $.lastChild ) ?
    314                                 $.lastChild :
    315                                 $.previousSibling;
    316 
    317                         var parent;
     304                        var walker = new CKEDITOR.dom.domWalker( this ),
     305                                node= walker.reverse( function( evt ){
    318306
    319                         while ( !node && ( parent = ( parent || $ ).parentNode ) )
    320                                 node = parent.previousSibling;
    321 
    322                         if ( !node )
    323                                 return null;
    324 
    325                         if ( nodeType && node.nodeType != nodeType )
    326                                 return arguments.callee.call( { $ : node }, false, nodeType );
    327 
    328                         return new CKEDITOR.dom.node( node );
     307                                        var transitionType = evt.data.type,
     308                                                to = evt.data.to;
     309                                        if( startFromSibling? transitionType == 'sibling' :
     310                                                nodeType? to.type == nodeType : true )
     311                                                this.stop();
     312                        } ).node;
     313                       
     314                        return node;
    329315                },
    330316
    331317                getPrevious : function()
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy