CKEDITOR.skins = (function()\r
{\r
// Holds the list of loaded skins.\r
- var loaded = {};\r
- var preloaded = {};\r
- var paths = {};\r
+ var loaded = {},\r
+ preloaded = {},\r
+ paths = {};\r
\r
var loadPart = function( editor, skinName, part, callback )\r
{\r
}\r
\r
// Check if we need to preload images from it.\r
- if ( !preloaded[ skinName ] )\r
+ var preload = skinDefinition.preload;\r
+ if ( preload && preload.length > 0 )\r
{\r
- var preload = skinDefinition.preload;\r
- if ( preload && preload.length > 0 )\r
+ if ( !preloaded[ skinName ] )\r
{\r
+ // Prepare image URLs\r
appendSkinPath( preload );\r
- CKEDITOR.imageCacher.load( preload, function()\r
+\r
+ // Get preloader event dispatcher object.\r
+ preloaded[ skinName ] = CKEDITOR.imageCacher.load( preload );\r
+ }\r
+\r
+ if ( !preloaded[ skinName ].finished )\r
+ {\r
+ // Bind listener for this editor instance.\r
+ preloaded[ skinName ].on( 'loaded', function()\r
{\r
- preloaded[ skinName ] = 1;\r
loadPart( editor, skinName, part, callback );\r
- } );\r
+ }\r
+ );\r
+\r
+ // Execution will be continued from event listener.\r
return;\r
}\r
-\r
- // Mark it as preloaded.\r
- preloaded[ skinName ] = 1;\r
}\r
\r
// Get the part definition.\r
\r
// Check whether the "css" and "js" properties have been defined\r
// for that part.\r
- var cssIsLoaded = !part.css || !part.css.length;\r
- var jsIsLoaded = !part.js || !part.js.length;\r
+ var cssIsLoaded = !part.css || !part.css.length,\r
+ jsIsLoaded = !part.js || !part.js.length;\r
\r
// This is the function that will trigger the callback calls on\r
// load.\r