|
@@ -124,6 +124,9 @@ var Reveal = (function(){
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // Force a layout when the whole page, incl fonts, has loaded
|
|
|
+ window.addEventListener( 'load', layout, false );
|
|
|
+
|
|
|
// Copy options over to our config object
|
|
|
extend( config, options );
|
|
|
|
|
@@ -367,12 +370,13 @@ var Reveal = (function(){
|
|
|
}
|
|
|
|
|
|
if ( config.controls && dom.controls ) {
|
|
|
- dom.controlsLeft.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
|
|
|
- dom.controlsRight.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateRight ), false ); } );
|
|
|
- dom.controlsUp.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateUp ), false ); } );
|
|
|
- dom.controlsDown.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateDown ), false ); } );
|
|
|
- dom.controlsPrev.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
|
|
|
- dom.controlsNext.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateNext ), false ); } );
|
|
|
+ var actionEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
|
|
|
+ dom.controlsLeft.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateLeft ), false ); } );
|
|
|
+ dom.controlsRight.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateRight ), false ); } );
|
|
|
+ dom.controlsUp.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateUp ), false ); } );
|
|
|
+ dom.controlsDown.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateDown ), false ); } );
|
|
|
+ dom.controlsPrev.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
|
|
|
+ dom.controlsNext.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -392,12 +396,13 @@ var Reveal = (function(){
|
|
|
}
|
|
|
|
|
|
if ( config.controls && dom.controls ) {
|
|
|
- dom.controlsLeft.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
|
|
|
- dom.controlsRight.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateRight ), false ); } );
|
|
|
- dom.controlsUp.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateUp ), false ); } );
|
|
|
- dom.controlsDown.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateDown ), false ); } );
|
|
|
- dom.controlsPrev.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
|
|
|
- dom.controlsNext.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateNext ), false ); } );
|
|
|
+ var actionEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
|
|
|
+ dom.controlsLeft.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateLeft ), false ); } );
|
|
|
+ dom.controlsRight.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateRight ), false ); } );
|
|
|
+ dom.controlsUp.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateUp ), false ); } );
|
|
|
+ dom.controlsDown.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateDown ), false ); } );
|
|
|
+ dom.controlsPrev.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
|
|
|
+ dom.controlsNext.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -776,12 +781,6 @@ var Reveal = (function(){
|
|
|
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );
|
|
|
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );
|
|
|
|
|
|
- // No need to proceed if we're navigating to the same slide as
|
|
|
- // we're already on, unless a fragment index is specified
|
|
|
- if( indexh === indexhBefore && indexv === indexvBefore && !f ) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
layout();
|
|
|
|
|
|
// Apply the new state
|
|
@@ -823,8 +822,9 @@ var Reveal = (function(){
|
|
|
// Store references to the previous and current slides
|
|
|
currentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;
|
|
|
|
|
|
+
|
|
|
// Show fragment, if specified
|
|
|
- if ( typeof f !== undefined ) {
|
|
|
+ if( ( indexh !== indexhBefore || indexv !== indexvBefore ) && f ) {
|
|
|
var fragments = currentSlide.querySelectorAll( '.fragment' );
|
|
|
|
|
|
toArray( fragments ).forEach( function( fragment, indexf ) {
|