Add courses and fixes
[hacks/simpleWebSlides.git] / simpleWebSlides.js
index f42811d..cc030cf 100644 (file)
@@ -354,23 +354,29 @@ SWS.Presentation = new function () {
         var cur = info.current;
         var custom = info.custom;
         var real_slide = to_slide.find(".sws-slide");
-
-        real_slide.find("*").andSelf().each(function (i){
+        var dont_touch = real_slide.find("sws-protect").find("*").addBack();
+        real_slide.find("*").addBack().not(dont_touch).each(function (i){
             var frameset = $(this).data("sws-frame-set") || {};
             if (frameset[cur])
                 SWS.Config['sws-object-activate']($(this));
             else
                 SWS.Config['sws-object-deactivate']($(this));
         });
-        var callbacks;
-        if (callbacks = info.callbacks.at_frame[self.getCurrentFrame()]){
-            for (var k = 0; k < callbacks.length; k++)
-                callbacks[k]($(to_slide));
-        };
+
 
         var all = $(from_slide).add(to_slide);
         all.find("*").addBack().promise().done(function() {
-            _disable_input_events = false;
+            var callbacks;
+            //execute callbacks when all elements are finished transitioning
+            if (callbacks = info.callbacks.at_frame[self.getCurrentFrame()]){
+                for (var k = 0; k < callbacks.length; k++)
+                    callbacks[k]($(to_slide));
+            };
+            all.find("*").addBack().promise().done(function() {
+                //wait for all elements to finish transitionning, in case a callback animate something
+                //an denable _input_events again.
+                _disable_input_events = false;
+            });
         });
     };