Ticket #4552: 4552_2.patch

File 4552_2.patch, 3.2 KB (added by Garry Yao, 14 years ago)
  • _source/core/tools.js

     
    189189                        return ( !!object && object instanceof Array );
    190190                },
    191191
     192                isEmpty : function ( object )
     193                {
     194                        for ( var i in object ) {
     195                                if( object.hasOwnProperty( i ) )
     196                                        return false;
     197                        }
     198                        return true;
     199                },
    192200                /**
    193201                 * Transforms a CSS property name to its relative DOM style name.
    194202                 * @param {String} cssName The CSS property name.
  • _source/plugins/floatpanel/plugin.js

     
    5656                        this.element = element;
    5757
    5858                        // Register panels to editor for easy destroying ( #4241 ).
    59                         editor.panels ? editor.panels.push( element ) : editor.panels = [ element ];
     59                        editor.panels ? editor.panels.push( panel ) : editor.panels = [ panel ];
    6060
    6161
    6262                        this._ =
     
    329329                        }
    330330                }
    331331        });
     332
     333        CKEDITOR.on( 'instanceDestroy', function( evt )
     334        {
     335                var editor = evt.data,
     336                        editorPanels = editor.panels;
     337
     338                // Panel might be used by other instances, just hide them.(#4552)
     339                for( var i = 0 ; editorPanels && i < editorPanels.length ; i++ )
     340                                editorPanels[ i ].element.hide();
     341
     342                // Destroy all shared panels at last when there's no more instances.(#4241)
     343                if( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) )
     344                        for( var i in panels )
     345                        {
     346                                debugger;
     347                                panels[ i ].destroy();
     348                                delete panels[ i ];
     349                        }
     350        } );
    332351})();
  • _source/plugins/panel/plugin.js

     
    230230                block.show();
    231231
    232232                return block;
     233        },
     234
     235        destroy : function()
     236        {
     237                this.element && this.element.remove();
    233238        }
    234239};
    235240
  • _source/themes/default/theme.js

     
    155155
    156156                destroy : function( editor )
    157157                {
    158                         var container = editor.container,
    159                                 panels = editor.panels;
     158                        var container = editor.container;
    160159
    161160                        /*
    162161                         * IE BUG: Removing the editor DOM elements while the selection is inside
     
    183182                        if ( container )
    184183                                container.remove();
    185184
    186                         for( var i = 0 ; panels && i < panels.length ; i++ )
    187                                         panels[ i ].remove();
    188 
    189185                        if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
    190186                        {
    191187                                editor.element.show();
  • _source/core/editor.js

     
    467467                        this.theme.destroy( this );
    468468                        this.fire( 'destroy' );
    469469                        CKEDITOR.remove( this );
     470                        CKEDITOR.fire( 'instanceDestroy', this );
    470471                },
    471472
    472473                /**
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy