Changeset 3704


Ignore:
Timestamp:
06/19/09 11:24:28 (6 years ago)
Author:
martinkou
Message:

Fixed #3758 : Dialog definition objects are now functionally independent for each editor.

Location:
CKEditor/trunk/_source
Files:
2 edited

Legend:

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

    r3477 r3704  
    3939                /**
    4040                 * Creates a deep copy of an object.
    41                  * Attention: there is no support for deep copy of Array properties and
    42                  * for recursive references.
     41                 * Attention: there is no support for recursive references.
    4342                 * @param {Object} object The object to be cloned.
    4443                 * @returns {Object} The object clone.
     
    6160                 * alert( clone.cars.Porsche.color );   // silver
    6261                 */
    63                 clone : function( object )
    64                 {
    65                         if( object === null || typeof( object ) != 'object')
    66                                 return object;
    67 
    68                         var clone = new object.constructor();
    69 
    70                         for ( var propertyName in object )
    71                         {
    72                                 var property = object[ propertyName ];
     62                clone : function( obj )
     63                {
     64                        var clone;
     65
     66                        // Array.
     67                        if ( obj && ( obj instanceof Array ) )
     68                        {
     69                                clone = [];
     70                               
     71                                for ( var i = 0 ; i < obj.length ; i++ )
     72                                        clone[ i ] = this.clone( obj[ i ] );
     73                               
     74                                return clone;
     75                        }
     76
     77                        // "Static" types.
     78                        if ( obj === null
     79                                || ( typeof( obj ) != 'object' )
     80                                || ( obj instanceof String )
     81                                || ( obj instanceof Number )
     82                                || ( obj instanceof Boolean )
     83                                || ( obj instanceof Date ) )
     84                        {
     85                                return obj;
     86                        }
     87
     88                        // Objects.
     89                        clone = new obj.constructor();
     90
     91                        for ( var propertyName in obj )
     92                        {
     93                                var property = obj[ propertyName ];
    7394                                clone[ propertyName ] = this.clone( property );
    7495                        }
  • CKEditor/trunk/_source/plugins/dialog/plugin.js

    r3689 r3704  
    9898                // Completes the definition with the default values.
    9999                definition = CKEDITOR.tools.extend( definition( editor ), defaultDialogDefinition );
     100
     101                // Clone a functionally independent copy for this dialog.
     102                definition = CKEDITOR.tools.clone( definition );
    100103
    101104                // Create a complex definition object, extending it with the API
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy