Ticket #2606: ticket2606.2.patch

File ticket2606.2.patch, 2.3 KB (added by Dmiry Polyakov, 15 years ago)

Patch to fix Ticket #2606 (Deleting a button (Safari) adds text-align: center to remaining contents) - v.2

  • editor/_source/classes/fckenterkey.js

     
    1 ?/*
     1/*
    22 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
    33 * Copyright (C) 2003-2008 Frederico Caldeira Knabben
    44 *
     
    172172                return false ;
    173173        }
    174174
     175        //fix for webkit-based browsers (http://dev.fckeditor.net/ticket/2606) - deletes button
     176        if ( FCKBrowserInfo.IsSafari ) {
     177                var prevNode = FCKDomTools.GetPreviousSourceNode( oRange.StartNode, true ) ;
     178
     179                if ( prevNode && this._IsButton( prevNode ) &&
     180                        ( oRange.StartNode.nodeType != 3 || (  this.Window.getSelection().focusNode != oRange.StartNode || this.Window.getSelection().focusOffset == 0 ) )
     181                )
     182                {
     183                        prevNode.parentNode.removeChild( prevNode ) ;
     184                        return true ;
     185                }
     186        }
     187
    175188        // On IE, it is better for us handle the deletion if the caret is preceeded
    176189        // by a <br> (#1383).
    177190        if ( FCKBrowserInfo.IsIE )
     
    360373                return true ;
    361374        }
    362375
     376        //fix for webkit-based browsers (http://dev.fckeditor.net/ticket/2606) - deletes button
     377        if ( FCKBrowserInfo.IsSafari ) {
     378                var nextNode = FCKDomTools.GetNextSourceNode( oRange.StartNode, true ) ;
     379                if ( nextNode && this._IsButton( nextNode ) && ( oRange.StartNode.nodeType != 3 ||  this.Window.getSelection().focusOffset == oRange.StartNode.length ))
     380                {
     381                        nextNode.parentNode.removeChild( nextNode ) ;
     382                        return true ;
     383                }
     384        }
     385
    363386        // There is just one special case for collapsed selections at the end of a block.
    364387        if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) )
    365388        {
     
    711734        range.Select() ;
    712735        range.Release() ;
    713736}
     737
     738// Used by doDelete and doBackspace in webkit-based browsers to delete a button, ticket #2606
     739FCKEnterKey.prototype._IsButton = function ( element )
     740{
     741        return ( element && element.tagName &&
     742                ((element.tagName.toLowerCase() == 'input' &&
     743                        (element.type.toLowerCase() == 'button' || element.type.toLowerCase() == 'submit' || element.type.toLowerCase() == 'reset')
     744                ) || element.tagName.toLowerCase() == "button")
     745        );
     746}
     747 No newline at end of file
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy