Changeset 6698


Ignore:
Timestamp:
04/18/11 18:13:00 (3 years ago)
Author:
garry.yao
Message:

#6629: refactored the padding body logic.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r6678 r6698  
    4747                <li><a href="http://dev.ckeditor.com/ticket/7347">#7347</a> : The ENTER key will not any more be caught by the dialog cover element.</li> 
    4848                <li><a href="http://dev.ckeditor.com/ticket/6718">#6718</a> : Paste from word command dominates over force paste as plain text configuration.</li> 
     49                <li><a href="http://dev.ckeditor.com/ticket/6629">#6629</a> : Padding body is not anymore needed when last block is pre-formatted.</li> 
    4950        </ul> 
    5051        <h3> 
  • CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js

    r6635 r6698  
    1111(function() 
    1212{ 
    13         // List of elements in which has no way to move editing focus outside. 
    14         var nonExitableElementNames = { table:1,pre:1 }; 
    15  
    1613        // Matching an empty paragraph at the end of document. 
    17         var emptyParagraphRegexp = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi; 
     14        var emptyParagraphRegexp = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi; 
    1815 
    1916        var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true ); 
    2017 
    21         // Elements that could have empty new line around, including table, pre-formatted block, hr, page-break. (#6554) 
    22         function nonExitable( element ) 
     18        // Elements that could blink the cursor anchoring beside it, like hr, page-break. (#6554) 
     19        function nonEditable( element ) 
    2320        { 
    24                 return ( element.getName() in nonExitableElementNames ) 
    25                                 || element.isBlockBoundary() && CKEDITOR.dtd.$empty[ element.getName() ]; 
     21                return element.isBlockBoundary() && CKEDITOR.dtd.$empty[ element.getName() ]; 
    2622        } 
    2723 
     
    410406                                if ( element && 
    411407                                         element.type == CKEDITOR.NODE_ELEMENT && 
    412                                          !nonExitable( element ) ) 
     408                                         !nonEditable( element ) ) 
    413409                                { 
    414410                                        range.moveToElementEditStart( element ); 
     
    420416                                        if ( element && 
    421417                                                 element.type == CKEDITOR.NODE_ELEMENT && 
    422                                                  !nonExitable( element ) ) 
     418                                                 !nonEditable( element ) ) 
    423419                                        { 
    424420                                                range.moveToElementEditEnd( element ); 
     
    433429                } 
    434430 
    435                 // All browsers are incapable to moving cursor out of certain non-exitable 
    436                 // blocks (e.g. table, list, pre) at the end of document, make this happen by 
    437                 // place a bogus node there, which would be later removed by dataprocessor. 
    438                 var walkerRange = new CKEDITOR.dom.range( editor.document ), 
    439                         walker = new CKEDITOR.dom.walker( walkerRange ); 
    440                 walkerRange.selectNodeContents( body ); 
    441                 walker.evaluator = function( node ) 
    442                 { 
    443                         return node.type == CKEDITOR.NODE_ELEMENT && ( node.getName() in nonExitableElementNames ); 
    444                 }; 
    445                 walker.guard = function( node, isMoveout ) 
    446                 { 
    447                         return !( ( node.type == CKEDITOR.NODE_TEXT && isNotWhitespace( node ) ) || isMoveout ); 
    448                 }; 
    449  
    450                 if ( walker.previous() ) 
     431                // Browsers are incapable of moving cursor out of certain block elements (e.g. table, div, pre) 
     432                // at the end of document, makes it unable to continue adding content, we have to make this 
     433                // easier by opening an new empty paragraph. 
     434                var testRange = new CKEDITOR.dom.range( editor.document ); 
     435                testRange.moveToElementEditEnd( editor.document.getBody() ); 
     436                var testPath = new CKEDITOR.dom.elementPath( testRange.startContainer ); 
     437                if ( !testPath.blockLimit.is( 'body') ) 
    451438                { 
    452439                        editor.fire( 'updateSnapshot' ); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy