Ticket #3481: 3481_2.patch

File 3481_2.patch, 2.5 KB (added by Martin Kou, 15 years ago)
  • editor/_source/internals/fck.js

     
    957957        FCKTools.AddEventListener( FCK.EditorDocument, 'mousemove', _FCK_MouseEventsListener ) ;
    958958        FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', _FCK_MouseEventsListener ) ;
    959959        FCKTools.AddEventListener( FCK.EditorDocument, 'mouseup', _FCK_MouseEventsListener ) ;
     960        if ( FCKBrowserInfo.IsSafari )
     961        {
     962                // #3481: WebKit has a bug with paste where the paste contents may leak
     963                // outside table cells. So add padding nodes before and after the paste.
     964                FCKTools.AddEventListener( FCK.EditorDocument, 'paste', function( evt )
     965                {
     966                        var range = new FCKDomRange( FCK.EditorWindow );
     967                        var nodeBefore = FCK.EditorDocument.createTextNode( '\ufeff' );
     968                        var nodeAfter = FCK.EditorDocument.createElement( 'a' );
     969                        nodeAfter.id = 'fck_paste_padding';
     970                        nodeAfter.innerHTML = '';
     971                        range.MoveToSelection();
     972                        range.DeleteContents();
    960973
     974                        // Insert padding nodes.
     975                        range.InsertNode( nodeBefore );
     976                        range.Collapse();
     977                        range.InsertNode( nodeAfter );
     978
     979                        // Move the selection to between the padding nodes.
     980                        range.MoveToPosition( nodeAfter, 3 );
     981                        range.Select();
     982
     983                        // Remove the padding nodes after the paste is done.
     984                        setTimeout( function()
     985                                {
     986                                        nodeBefore.parentNode.removeChild( nodeBefore );
     987                                        nodeAfter = FCK.EditorDocument.getElementById( 'fck_paste_padding' );
     988                                        nodeAfter.parentNode.removeChild( nodeAfter );
     989                                }, 0 );
     990                } );
     991        }
     992
    961993        // Most of the CTRL key combos do not work under Safari for onkeydown and onkeypress (See #1119)
    962994        // But we can use the keyup event to override some of these...
    963995        if ( FCKBrowserInfo.IsSafari )
  • _whatsnew.html

     
    6262                        had no effect if ProcessHTMLEntities is false.</li>
    6363                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3880">#3880</a>] Fixed some minor
    6464                        logical and typing mistakes in fckdomrange_ie.js.</li>
     65                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3481">#3481</a>] Fixed an issue in
     66                        WebKit where paste actions inside table cells may leak outside of the table cell.</li>
    6567        </ul>
    6668        <p>
    6769                <a href="_whatsnew_history.html">See previous versions history</a></p>
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy