Changeset 6682


Ignore:
Timestamp:
04/14/11 13:54:01 (4 years ago)
Author:
garry.yao
Message:

#6841: Enter key at the end of pre-formatted block with exit from it.

Location:
CKEditor/branches/versions/3.6.x
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/branches/versions/3.6.x/CHANGES.html

    r6681 r6682  
    4343                <li><a href="http://dev.ckeditor.com/ticket/5745">#5745</a> : Allow to pass extra configuration options for iframeDialog.</li> 
    4444                <li><a href="http://dev.ckeditor.com/ticket/7240">#7240</a> : Added the Developer Tools (<code>devtools</code>) plugin that shows information about dialog window UI elements to allow for easier customization.</li> 
     45                <li><a href="http://dev.ckeditor.com/ticket/6841">#6841</a> : Enter key at the end of pre-formatted block will exit from it.</li> 
    4546        </ul> 
    4647        <p> 
  • CKEditor/branches/versions/3.6.x/_source/core/dom/range.js

    r6660 r6682  
    360360                        { 
    361361                                // If there's any visible text, then we're not at the start. 
    362                                 if ( CKEDITOR.tools.trim( node.getText() ).length ) 
     362                                if ( node.hasAscendant( 'pre' ) || CKEDITOR.tools.trim( node.getText() ).length ) 
    363363                                        return false; 
    364364                        } 
  • CKEditor/branches/versions/3.6.x/_source/plugins/enterkey/plugin.js

    r6660 r6682  
    3232                        var doc = range.document; 
    3333 
     34                        var atBlockStart = range.checkStartOfBlock(), 
     35                                atBlockEnd = range.checkEndOfBlock(), 
     36                                path = new CKEDITOR.dom.elementPath( range.startContainer ), 
     37                                block = path.block; 
     38 
    3439                        // Exit the list when we're inside an empty list item block. (#5376) 
    35                         if ( range.checkStartOfBlock() && range.checkEndOfBlock() ) 
    36                         { 
    37                                 var path = new CKEDITOR.dom.elementPath( range.startContainer ), 
    38                                                 block = path.block; 
    39  
     40                        if ( atBlockStart && atBlockEnd ) 
     41                        { 
    4042                                if ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) ) 
    4143                                { 
     
    4446                                } 
    4547                        } 
     48                        // Don't split <pre> if we're in the middle of it, act as shift enter key. 
     49                        else if ( !atBlockEnd && block.is( 'pre' ) ) 
     50                                return enterBr( editor, mode, range, forceMode ); 
    4651 
    4752                        // Determine the block element to be used. 
     
    108113                                        // a Shift+Enter (#77). Create a new block element instead 
    109114                                        // (later in the code). 
    110                                         if ( previousBlock.is( 'li' ) || !headerTagRegex.test( previousBlock.getName() ) ) 
     115                                        if ( previousBlock.is( 'li' ) || 
     116                                                        ! ( headerTagRegex.test( previousBlock.getName() ) || previousBlock.is( 'pre' ) ) ) 
    111117                                        { 
    112118                                                // Otherwise, duplicate the previous block. 
     
    337343                // 1. We want to enforce the mode to be respected, instead 
    338344                // of cloning the current block. (#77) 
    339                 // 2. Always perform a block break when inside <pre> (#5402). 
    340                 if ( editor.getSelection().getStartElement().hasAscendant( 'pre', true ) ) 
    341                 { 
    342                         setTimeout( function() { enterBlock( editor, editor.config.enterMode, null, true ); }, 0 ); 
    343                         return true; 
    344                 } 
    345                 else 
    346                         return enter( editor, editor.config.shiftEnterMode, 1 ); 
     345                return enter( editor, editor.config.shiftEnterMode, 1 ); 
    347346        } 
    348347 
     
    362361                        { 
    363362                                editor.fire( 'saveSnapshot' );  // Save undo step. 
    364                                 if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', 1 ) ) 
     363                                if ( mode == CKEDITOR.ENTER_BR ) 
    365364                                        enterBr( editor, mode, null, forceMode ); 
    366365                                else 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy