JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.4.2
[ckeditor.git] / _source / core / skins.js
index b31373e..2246f6d 100644 (file)
@@ -16,9 +16,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
 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
@@ -55,22 +55,30 @@ CKEDITOR.skins = (function()
                }\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
@@ -93,8 +101,8 @@ CKEDITOR.skins = (function()
 \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