/*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
delete nativeListeners[ eventName ];\r
}\r
}\r
+ },\r
+\r
+ /**\r
+ * Removes any listener set on this object.\r
+ * To avoid memory leaks we must assure that there are no\r
+ * references left after the object is no longer needed.\r
+ */\r
+ removeAllListeners : function()\r
+ {\r
+ var nativeListeners = this.getCustomData( '_cke_nativeListeners' );\r
+ for ( var eventName in nativeListeners )\r
+ {\r
+ var listener = nativeListeners[ eventName ];\r
+ if ( this.$.removeEventListener )\r
+ this.$.removeEventListener( eventName, listener, false );\r
+ else if ( this.$.detachEvent )\r
+ this.$.detachEvent( 'on' + eventName, listener );\r
+\r
+ delete nativeListeners[ eventName ];\r
+ }\r
}\r
};\r
})();\r
{\r
var customData = {};\r
\r
+ CKEDITOR.on( 'reset', function()\r
+ {\r
+ customData = {};\r
+ });\r
+\r
/**\r
* Determines whether the specified object is equal to the current object.\r
* @name CKEDITOR.dom.domObject.prototype.equals\r
return dataSlot && dataSlot[ key ];\r
};\r
\r
+ /**\r
+ * @name CKEDITOR.dom.domObject.prototype.removeCustomData\r
+ */\r
domObjectProto.removeCustomData = function( key )\r
{\r
var expandoNumber = this.$._cke_expando,\r
return retval || null;\r
};\r
\r
+ /**\r
+ * Removes any data stored on this object.\r
+ * To avoid memory leaks we must assure that there are no\r
+ * references left after the object is no longer needed.\r
+ * @name CKEDITOR.dom.domObject.prototype.clearCustomData\r
+ * @function\r
+ */\r
+ domObjectProto.clearCustomData = function()\r
+ {\r
+ // Clear all event listeners\r
+ this.removeAllListeners();\r
+\r
+ var expandoNumber = this.$._cke_expando;\r
+ expandoNumber && delete customData[ expandoNumber ];\r
+ };\r
+\r
+ /**\r
+ * @name CKEDITOR.dom.domObject.prototype.getCustomData\r
+ */\r
domObjectProto.getUniqueId = function()\r
{\r
return this.$._cke_expando || ( this.$._cke_expando = CKEDITOR.tools.getNextNumber() );\r