Ticket #3283: 3283_3.patch

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

     
    286286
    287287                getNextSourceNode : function( startFromSibling, nodeType )
    288288                {
    289                         var $ = this.$;
     289                        var walker = new CKEDITOR.dom.domWalker( this );
     290                        // Validate node type.
     291                        if( nodeType )
     292                                walker.on( 'step' , function( evt ){
     293                                        var node = evt.data.node;
     294                                        if( node.type != nodeType && this.stopped() )
     295                                                this._.stopFlag = false;
     296                                } );
     297                       
     298                        var node = walker.forward( function( evt ){
    290299
    291                         var node = ( !startFromSibling && $.firstChild ) ?
    292                                 $.firstChild :
    293                                 $.nextSibling;
    294 
    295                         var parent;
    296 
    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 );
     300                                var transitionType = evt.data.type;
     301                                if( startFromSibling?
     302                                                transitionType == 'sibling' : true )
     303                                        this.stop();
     304                        } ).node;
     305                       
     306                        return node;
    307307                },
    308308
    309309                getPreviousSourceNode : function( startFromSibling, nodeType )
     
    308308
    309309                getPreviousSourceNode : function( startFromSibling, nodeType )
    310310                {
    311                         var $ = this.$;
     311                        var walker = new CKEDITOR.dom.domWalker( this );
    312312
    313                         var node = ( !startFromSibling && $.lastChild ) ?
    314                                 $.lastChild :
    315                                 $.previousSibling;
     313                        // Validate node type.
     314                        if( nodeType )
     315                                walker.on( 'step' , function( evt ){
     316                                        var node = evt.data.node;
     317                                        if( node.type != nodeType && this.stopped() )
     318                                                this._.stopFlag = false;
     319                                } );
    316320
    317                         var parent;
     321                        var node= walker.reverse( function( evt ){
    318322
    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 );
     323                                        var transitionType = evt.data.type;
     324                                        if( startFromSibling?
     325                                                        transitionType == 'sibling' : true )
     326                                                this.stop();
     327                        } ).node;
     328                       
     329                        return node;
    329330                },
    330331
    331332                getPrevious : function()
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy