Ticket #3505: 3505_2.patch

File 3505_2.patch, 1.6 KB (added by Garry Yao, 17 years ago)
  • _source/core/dom/range.js

     
    3131        // V2
    3232        var execContentsAction = function( range, action, docFrag )
    3333        {
     34                range.optimizeBookmark();
     35               
    3436                var startNode   = range.startContainer;
    3537                var endNode             = range.endContainer;
    3638
     
    653655                        }
    654656                },
    655657
     658                /**
     659                 * Move the range out of bookmark nodes if they're been the container.
     660                 */
     661                optimizeBookmark: function()
     662                {
     663                        var startNode = this.startContainer,
     664                                endNode = this.endContainer;
     665
     666                        if ( startNode.is && startNode.is( 'span' )
     667                                && startNode.hasAttribute( '_fck_bookmark' ) )
     668                                this.setStartAt( startNode, CKEDITOR.POSITION_BEFORE_START );
     669                        if ( endNode && endNode.is && endNode.is( 'span' )
     670                                && endNode.hasAttribute( '_fck_bookmark' ) )
     671                                this.setEndAt( endNode,  CKEDITOR.POSITION_AFTER_END );
     672                },
     673
    656674                trim : function( ignoreStart, ignoreEnd )
    657675                {
    658676                        var startContainer = this.startContainer;
     
    14871505                                else if ( editableElement )
    14881506                                        break ;         // If we already found an editable element, stop the loop.
    14891507
    1490                                 targetElement = targetElement.getFirst();
     1508                                // Avoid anchoring inside bookmark nodes.
     1509                                if ( editableElement
     1510                                                && ( editableElement.getName( 'span' )
     1511                                                && editableElement.hasAttribute( '_fck_bookmark' ) ) )
     1512                                        targetElement = editableElement.getNext();
     1513                                else
     1514                                        targetElement = targetElement.getFirst();
    14911515                        }
    14921516
    14931517                        if ( editableElement )
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy