Ticket #7358: 7358_2.patch

File 7358_2.patch, 1.7 KB (added by Garry Yao, 13 years ago)
  • _source/plugins/selection/plugin.js

     
    7070
    7171        // #### checkSelectionChange : END
    7272
     73        function rangeRequiresFix( range )
     74        {
     75                function isInlineCt( node )
     76                {
     77                        return node && node.type == CKEDITOR.NODE_ELEMENT
     78                                        && node.getName() in CKEDITOR.dtd.$removeEmpty;
     79                }
     80
     81                var start = range.startContainer,
     82                        offset = range.startOffset;
     83
     84                if ( start.type == CKEDITOR.NODE_TEXT )
     85                        return false;
     86
     87                // 1. Empty inline element. <span>^</span>
     88                // 2. Adjoin to inline element. <p><strong>text</strong>^</p>
     89                return !CKEDITOR.tools.trim( start.getHtml() ) ? isInlineCt( start ) : isInlineCt( start.getChild( offset - 1 ) ) || isInlineCt( start.getChild( offset ) )
     90        }
     91
    7392        var selectAllCmd =
    7493        {
    7594                modes : { wysiwyg : 1, source : 1 },
     
    158177                                                // executed, so they'll not get blocked by it.
    159178                                                switch ( e.data.keyCode )
    160179                                                {
     180                                                        case 13 :       // ENTER
     181                                                        case CKEDITOR.SHIFT + 13 :      // SHIFT-ENTER
    161182                                                        case 37 :       // LEFT-ARROW
    162183                                                        case 39 :       // RIGHT-ARROW
    163184                                                        case 8 :        // BACKSPACE
    164185                                                                removeFillingChar( editor.document );
    165186                                                }
    166                                         });
     187                                        }, null, null, 10 );
    167188
    168189                                var fillingCharBefore;
    169190                                function beforeData()
     
    12561277                                                startContainer.appendText( '' );
    12571278                                        }
    12581279
    1259                                         if ( range.collapsed && CKEDITOR.env.webkit )
     1280                                        if ( range.collapsed
     1281                                                        && CKEDITOR.env.webkit
     1282                                                        && rangeRequiresFix( range ) )
    12601283                                        {
    12611284                                                // Append a zero-width space so WebKit will not try to
    12621285                                                // move the selection by itself (#1272).
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy