Changeset 598


Ignore:
Timestamp:
07/31/2007 09:24:09 AM (8 years ago)
Author:
martinkou
Message:

Fix for #393 : Fixed the issue where the caret would still jump to the next line when the user moves it to the end of the line in some cases.
Fix for #393 : Fixed the issue where tag discontinuation by the <End> key would only discontinue the innermost inline tag.

Location:
FCKeditor/trunk/editor/_source/internals
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • FCKeditor/trunk/editor/_source/internals/fck_gecko.js

    r597 r598  
    7070                if ( keyCode < 33 || keyCode > 40 )
    7171                        return ;
     72               
     73                var blockEmptyStop = function( node )
     74                {
     75                        if ( node.nodeType != 1 )
     76                                return false ;
     77                        var tag = node.tagName.toLowerCase() ;
     78                        return ( FCKListsLib.BlockElements[tag] || FCKListsLib.EmptyElements[tag] ) ;
     79                }
    7280
    7381                var moveCursor = function()
     
    7987
    8088                        var node = range.endContainer ;
    81                        
     89
    8290                        // only perform the patched behavior if we're at the end of a text node.
    8391                        if ( node.nodeType != 3 )
     
    96104                        //      - if the DFS has scanned all nodes under my parent, then go the next step.
    97105                        //      - if there is a text node after me but still under my parent, then do nothing and return.
    98                         var nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode ) ;
     106                        var nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode, blockEmptyStop ) ;
    99107                        if ( nextTextNode )
    100108                                return ;
     
    103111                        range = FCK.EditorDocument.createRange() ;
    104112
    105                         nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode.parentNode ) ;
     113                        nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode.parentNode, blockEmptyStop ) ;
    106114                        if ( nextTextNode )
    107115                        {
     
    115123                        {
    116124                                // no suitable next siblings under our grandparent! what to do next?
    117                                 node = node.parentNode ;
     125                                while ( node.parentNode
     126                                        && node == node.parentNode.lastChild
     127                                        && ( ! FCKListsLib.BlockElements[node.parentNode.tagName.toLowerCase()] ) )
     128                                        node = node.parentNode ;
     129                       
     130
    118131                                if ( FCKListsLib.BlockElements[ parentTag ]
    119132                                                || FCKListsLib.EmptyElements[ parentTag ]
  • FCKeditor/trunk/editor/_source/internals/fcktools.js

    r596 r598  
    535535}
    536536
    537 FCKTools.GetNextTextNode = function( textnode, limitNode )
     537FCKTools.GetNextTextNode = function( textnode, limitNode, checkStop )
    538538{
    539539        node = this.GetNextNode( textnode, limitNode ) ;
     540        if ( checkStop && node && checkStop( node ) )
     541                return null ;
    540542        while ( node && node.nodeType != 3 )
     543        {
    541544                node = this.GetNextNode( node, limitNode ) ;
     545                if ( checkStop && node && checkStop( node ) )
     546                        return null ;
     547        }
    542548        return node ;
    543549}
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy