diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2012-03-30 23:51:37 -0400 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2012-03-30 23:51:37 -0400 |
commit | 8dc7ae85a1794f35d56caa943e1e384a45c478dd (patch) | |
tree | cd9f02dc58bb85ed7436f061460928c264bd0f73 /js | |
parent | 2c78eea0ca9496d5eb0e72d92b49aef8b220ef1d (diff) | |
download | perl-software-in-gnu-guix-8dc7ae85a1794f35d56caa943e1e384a45c478dd.tar perl-software-in-gnu-guix-8dc7ae85a1794f35d56caa943e1e384a45c478dd.tar.gz |
adjustments to custom state events
Diffstat (limited to 'js')
-rw-r--r-- | js/reveal.js | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/js/reveal.js b/js/reveal.js index 49c4bc9..e35b8de 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -200,8 +200,6 @@ var Reveal = (function(){ case 40: navigateDown(); break; // down } - slide(); - event.preventDefault(); } @@ -490,21 +488,38 @@ var Reveal = (function(){ * set indices. */ function slide() { - // Clean up the current state - while( state.length ) { - document.documentElement.classList.remove( state.pop() ); - } + // Remember the state before this slide + var stateBefore = state.concat(); + + // Reset the state array + state.length = 0; + // Activate and transition to the new slide indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, indexh ); indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, indexv ); // Apply the new state - for( var i = 0, len = state.length; i < len; i++ ) { + stateLoop: for( var i = 0, len = state.length; i < len; i++ ) { + // Check if this state existed on the previous slide. If it + // did, we will avoid adding it repeatedly. + for( var j = 0; j < stateBefore.length; j++ ) { + if( stateBefore[j] === state[i] ) { + stateBefore.splice( j, 1 ); + continue stateLoop; + } + } + document.documentElement.classList.add( state[i] ); - // dispatch custom event - var event = document.createEvent("HTMLEvents"); - event.initEvent(state[i], true, true); - document.dispatchEvent(event); + + // Dispatch custom event + var event = document.createEvent( "HTMLEvents" ); + event.initEvent( state[i], false, true ); + dom.wrapper.dispatchEvent( event ); + } + + // Clean up the remaints of the previous state + while( stateBefore.length ) { + document.documentElement.classList.remove( stateBefore.pop() ); } // Update progress if enabled |