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 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy