Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 1177)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 1178)
@@ -271,7 +271,21 @@
 	OnDoubleClick : function( element )
 	{
-		var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ;
-		if ( oHandler )
-			oHandler( element ) ;
+		var oCalls = FCK.RegisteredDoubleClickHandlers[ element.tagName.toUpperCase() ] ;
+
+		if ( oCalls )
+		{
+			for ( var i = 0 ; i < oCalls.length ; i++ )
+				oCalls[ i ]( element ) ;
+		}
+
+		// Generic handler for any element
+		oCalls = FCK.RegisteredDoubleClickHandlers[ '*' ] ;
+
+		if ( oCalls )
+		{
+			for ( var i = 0 ; i < oCalls.length ; i++ )
+				oCalls[ i ]( element ) ;
+		}
+
 	},
 
@@ -279,5 +293,19 @@
 	RegisterDoubleClickHandler : function( handlerFunction, tag )
 	{
-		FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ;
+		var nodeName = tag || '*' ;
+		nodeName = nodeName.toUpperCase() ;
+
+		var aTargets ;
+
+		if ( !( aTargets = FCK.RegisteredDoubleClickHandlers[ nodeName ] ) )
+			FCK.RegisteredDoubleClickHandlers[ nodeName ] = [ handlerFunction ] ;
+		else
+		{
+			// Check that the event handler isn't already registered with the same listener
+			// It doesn't detect function pointers belonging to an object (at least in Gecko)
+			if ( aTargets.IndexOf( handlerFunction ) == -1 )
+				aTargets.push( handlerFunction ) ;
+		}
+	
 	},
 
