Changeset 5464


Ignore:
Timestamp:
05/13/10 12:27:11 (4 years ago)
Author:
garry.yao
Message:

#5623: Creating bookmark and use them as boundary nodes when apply inline style.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r5463 r5464  
    7979                <li><a href="http://dev.fckeditor.net/ticket/5381">#5381</a> : Unable to place cursor between two paragraphs in body.</li> 
    8080                <li><a href="http://dev.fckeditor.net/ticket/5568">#5568</a> : [IE6/7] Selecting a entire table cell changes the original range.</li> 
     81                <li><a href="http://dev.fckeditor.net/ticket/5623">#5623</a> : [Firefox] Apply style that edges another inline style result incorrect.</li> 
    8182        </ul> 
    8283        <h3> 
  • CKEditor/trunk/_source/plugins/styles/plugin.js

    r5413 r5464  
    380380                // Get the first node to be processed and the last, which concludes the 
    381381                // processing. 
    382                 var boundaryNodes = range.getBoundaryNodes(); 
    383                 var firstNode = boundaryNodes.startNode; 
    384                 var lastNode = boundaryNodes.endNode.getNextSourceNode( true ); 
    385  
    386                 // Probably the document end is reached, we need a marker node. 
    387                 if ( !lastNode ) 
    388                 { 
    389                                 var marker; 
    390                                 lastNode = marker = document.createText( '' ); 
    391                                 lastNode.insertAfter( range.endContainer ); 
    392                 } 
    393                 // The detection algorithm below skips the contents inside bookmark nodes, so 
    394                 // we'll need to make sure lastNode isn't the &nbsp; inside a bookmark node. 
    395                 var lastParent = lastNode.getParent(); 
    396                 if ( lastParent && lastParent.getAttribute( '_fck_bookmark' ) ) 
    397                         lastNode = lastParent; 
    398  
    399                 if ( lastNode.equals( firstNode ) ) 
    400                 { 
    401                         // If the last node is the same as the the first one, we must move 
    402                         // it to the next one, otherwise the first one will not be 
    403                         // processed. 
    404                         lastNode = lastNode.getNextSourceNode( true ); 
    405  
    406                         // It may happen that there are no more nodes after it (the end of 
    407                         // the document), so we must add something there to make our code 
    408                         // simpler. 
    409                         if ( !lastNode ) 
    410                         { 
    411                                 lastNode = marker = document.createText( '' ); 
    412                                 lastNode.insertAfter( firstNode ); 
    413                         } 
    414                 } 
     382                var boundaryNodes = range.createBookmark(), 
     383                        firstNode = boundaryNodes.startNode, 
     384                        lastNode = boundaryNodes.endNode; 
    415385 
    416386                var currentNode = firstNode; 
     
    569539                } 
    570540 
    571                 // Remove the temporary marking node.(#4111) 
    572                 marker && marker.remove(); 
     541                firstNode.remove(); 
     542                lastNode.remove(); 
    573543                range.moveToBookmark( bookmark ); 
    574544                // Minimize the result range to exclude empty text nodes. (#5374) 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy