Changeset 598


Ignore:
Timestamp:
07/31/07 09:24:09 (7 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