Changeset 1178


Ignore:
Timestamp:
12/05/07 08:44:01 (8 years ago)
Author:
martinkou
Message:

Fixed #1609 : Made it possible to use RegisterDoubleClick() with any tag and with multiple event handlers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • FCKeditor/trunk/editor/_source/internals/fck.js

    r1138 r1178  
    271271        OnDoubleClick : function( element )
    272272        {
    273                 var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
    274                 if ( oHandler )
    275                         oHandler( element ) ;
     273                var oCalls = FCK.RegisteredDoubleClickHandlers[ element.tagName.toUpperCase() ] ;
     274
     275                if ( oCalls )
     276                {
     277                        for ( var i = 0 ; i < oCalls.length ; i++ )
     278                                oCalls[ i ]( element ) ;
     279                }
     280
     281                // Generic handler for any element
     282                oCalls = FCK.RegisteredDoubleClickHandlers[ '*' ] ;
     283
     284                if ( oCalls )
     285                {
     286                        for ( var i = 0 ; i < oCalls.length ; i++ )
     287                                oCalls[ i ]( element ) ;
     288                }
     289
    276290        },
    277291
     
    279293        RegisterDoubleClickHandler : function( handlerFunction, tag )
    280294        {
    281                 FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
     295                var nodeName = tag || '*' ;
     296                nodeName = nodeName.toUpperCase() ;
     297
     298                var aTargets ;
     299
     300                if ( !( aTargets = FCK.RegisteredDoubleClickHandlers[ nodeName ] ) )
     301                        FCK.RegisteredDoubleClickHandlers[ nodeName ] = [ handlerFunction ] ;
     302                else
     303                {
     304                        // Check that the event handler isn't already registered with the same listener
     305                        // It doesn't detect function pointers belonging to an object (at least in Gecko)
     306                        if ( aTargets.IndexOf( handlerFunction ) == -1 )
     307                                aTargets.push( handlerFunction ) ;
     308                }
     309       
    282310        },
    283311
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy