Ticket #4552: 4552_3.patch
File 4552_3.patch, 3.2 KB (added by , 14 years ago) |
---|
-
_source/core/tools.js
189 189 return ( !!object && object instanceof Array ); 190 190 }, 191 191 192 isEmpty : function ( object ) 193 { 194 for ( var i in object ) 195 { 196 if ( object.hasOwnProperty( i ) ) 197 return false; 198 } 199 return true; 200 }, 192 201 /** 193 202 * Transforms a CSS property name to its relative DOM style name. 194 203 * @param {String} cssName The CSS property name. -
_source/plugins/floatpanel/plugin.js
39 39 }); 40 40 } 41 41 42 panel.editor = editor; 42 43 return panel; 43 44 } 44 45 … … 55 56 56 57 this.element = element; 57 58 58 // Register panels to editor for easy destroying ( #4241 ).59 editor.panels ? editor.panels.push( element ) : editor.panels = [ element ];60 61 62 59 this._ = 63 60 { 64 61 // The panel that will be floating. … … 329 326 } 330 327 } 331 328 }); 329 330 CKEDITOR.on( 'instanceDestroyed', function( evt ) 331 { 332 var editor = evt.data, 333 isLastInstance = CKEDITOR.tools.isEmpty( CKEDITOR.instances ); 334 335 for( var i in panels ) 336 { 337 var panel = panels[ i ]; 338 // Safe to destroy it since there're no more instances.(#4241) 339 if( isLastInstance ) 340 { 341 panels[ i ].destroy(); 342 delete panels[ i ]; 343 } 344 // Panel might be used by other instances, just hide them.(#4552) 345 else if ( panel.editor == editor ) 346 panel.element.hide(); 347 } 348 } ); 332 349 })(); -
_source/plugins/panel/plugin.js
230 230 block.show(); 231 231 232 232 return block; 233 }, 234 235 destroy : function() 236 { 237 this.element && this.element.remove(); 233 238 } 234 239 }; 235 240 -
_source/themes/default/theme.js
155 155 156 156 destroy : function( editor ) 157 157 { 158 var container = editor.container, 159 panels = editor.panels; 158 var container = editor.container; 160 159 161 160 /* 162 161 * IE BUG: Removing the editor DOM elements while the selection is inside … … 183 182 if ( container ) 184 183 container.remove(); 185 184 186 for( var i = 0 ; panels && i < panels.length ; i++ )187 panels[ i ].remove();188 189 185 if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ) 190 186 { 191 187 editor.element.show(); -
_source/core/editor.js
467 467 this.theme.destroy( this ); 468 468 this.fire( 'destroy' ); 469 469 CKEDITOR.remove( this ); 470 CKEDITOR.fire( 'instanceDestroyed', this ); 470 471 }, 471 472 472 473 /**