Changeset 3119


Ignore:
Timestamp:
03/02/09 19:42:55 (6 years ago)
Author:
garry.yao
Message:

Fixing CKEDITOR.event duplicate event registration across multiple instances of #2927.

Location:
CKEditor/trunk/_source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/_source/core/command.js

    r3109 r3119  
    4949} 
    5050 
    51 CKEDITOR.event.implementOn( CKEDITOR.command.prototype ); 
     51CKEDITOR.event.implementOn( CKEDITOR.command.prototype, true ); 
  • CKEditor/trunk/_source/core/dom/domobject.js

    r3113 r3119  
    193193 
    194194        // Implement CKEDITOR.event. 
    195         CKEDITOR.event.implementOn( domObjectProto ); 
     195        CKEDITOR.event.implementOn( domObjectProto, true ); 
    196196 
    197197})( CKEDITOR.dom.domObject.prototype ); 
  • CKEditor/trunk/_source/core/editor_basic.js

    r2948 r3119  
    175175 
    176176        // "Inherit" (copy actually) from CKEDITOR.event. 
    177         CKEDITOR.event.implementOn( CKEDITOR.editor.prototype ); 
     177        CKEDITOR.event.implementOn( CKEDITOR.editor.prototype, true ); 
    178178} 
  • CKEditor/trunk/_source/core/event.js

    r3090 r3119  
    1919        CKEDITOR.event = function() 
    2020        { 
    21                 ( this._ || ( this._ = {} ) ).events = {}; 
     21                //In case of preserving existed events 
     22                var preExistedEvents = this._   && this._.events; 
     23                if( !preExistedEvents ) 
     24                        ( this._ || ( this._ = {} ) ).events = {}; 
    2225        }; 
    2326 
     
    2528         * Implements the {@link CKEDITOR.event} features in an object. 
    2629         * @param {Object} targetObject The object in which implement the features. 
     30         * @param {Boolean} isTargetPrototype If the target is a prototype of 
     31         *            constructor, the internal 'events' object will not be copied, 
     32         *            which should be composed by the constructor itself. 
    2733         * @example 
    2834         * var myObject = { message : 'Example' }; 
     
    3440         * myObject.fire( 'testEvent' ); 
    3541         */ 
    36         CKEDITOR.event.implementOn = function( targetObject ) 
     42        CKEDITOR.event.implementOn = function( targetObject , isTargetPrototype) 
    3743        { 
    38                 CKEDITOR.event.call( targetObject ); 
     44                if( !isTargetPrototype ) 
     45                        CKEDITOR.event.call( targetObject ); 
    3946 
    4047                for ( var prop in CKEDITOR.event.prototype ) 
    4148                { 
    42                         if ( targetObject[ prop ] == undefined ) 
    43                                 targetObject[ prop ] = CKEDITOR.event.prototype[ prop ]; 
     49                        (function(){ 
     50                                 
     51                                var property = prop; 
     52                                 
     53                                if ( targetObject[ property ] == undefined ) 
     54                                        targetObject[ property ] = isTargetPrototype? 
     55                                        function() 
     56                                        { 
     57                                                //pre-setup events model  
     58                                                if( ! ( this._ && this._.events ) ) 
     59                                                        CKEDITOR.event.call( this ); 
     60                                                 
     61                                                ( this[ property ] = CKEDITOR.event.prototype[ property ] ) 
     62                                                        .apply( this, arguments ); 
     63                                        } : 
     64                                        CKEDITOR.event.prototype[ property ]; 
     65                        })(); 
    4466                } 
    4567        }; 
  • CKEditor/trunk/_source/plugins/dialog/plugin.js

    r3087 r3119  
    10001000        // "Inherit" (copy actually) from CKEDITOR.event. 
    10011001        CKEDITOR.event.implementOn( CKEDITOR.dialog ); 
    1002         CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype ); 
     1002        CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype, true ); 
    10031003 
    10041004        var defaultDialogDefinition = 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy