Ticket #3509: 3509_5.patch

File 3509_5.patch, 2.0 KB (added by Josh Nisly, 11 years ago)
  • _source/plugins/wysiwygarea/plugin.js

     
    156156                }
    157157        }
    158158
     159        function onSelectionChangeFixEOL( editor )
     160        {
     161                var range = editor.getSelection().getRanges()[0];
     162                if ( range.collapsed && editor.config.enterMode != CKEDITOR.ENTER_BR && range.startContainer.type == CKEDITOR.NODE_ELEMENT)
     163                {
     164                        // If the current node is not a BR, kick out
     165                        var startNode = range.startContainer.getChild( range.startOffset );
     166                        if ( !startNode || startNode.type != CKEDITOR.NODE_ELEMENT || !startNode.is( 'br' ) )
     167                                return;
     168                               
     169                        var curElem = range.getBoundaryNodes().startNode,
     170                                prevElem;
     171                        var startPath = new CKEDITOR.dom.elementPath( curElem );
     172                        while ( true )
     173                        {
     174                                if ( !curElem || curElem.type == CKEDITOR.NODE_TEXT )
     175                                        break;
     176
     177                                if ( ( startPath.blockLimit.getPosition( curElem ) & CKEDITOR.POSITION_CONTAINS ) == 0 )
     178                                        return;
     179
     180                                prevElem = curElem;
     181                                curElem = curElem.getPreviousSourceNode( false );
     182                        }
     183
     184                        if ( prevElem )
     185                        {
     186                                range.moveToPosition( prevElem, CKEDITOR.POSITION_BEFORE_END );
     187                                editor.getSelection().selectRanges( [ range ] );
     188                                // Force a selection update to update the styles buttons.
     189                                editor.forceNextSelectionCheck();
     190                                editor.selectionChange();
     191                        }
     192                }
     193        }
     194
    159195        CKEDITOR.plugins.add( 'wysiwygarea',
    160196        {
    161197                requires : [ 'editingblock' ],
     
    492528                                        editor.on( 'insertElement', onInsertElement, null, null, 20 );
    493529                                        // Auto fixing on some document structure weakness to enhance usabilities. (#3190 and #3189)
    494530                                        editor.on( 'selectionChange', onSelectionChangeFixBody, null, null, 1 );
     531                                        editor.on( 'selectionChange', function( event )
     532                                                {
     533                                                        onSelectionChangeFixEOL(event.editor);
     534                                                }, null, null, 1 );
    495535                                });
    496536                }
    497537        });
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy