navigateNext no longer gets stuck on first stack when looping is enabled

This commit is contained in:
Hakim El Hattab 2018-02-12 13:49:33 +01:00
parent d5f4edeeef
commit 325162692e

View file

@ -4410,7 +4410,17 @@
// Prioritize revealing fragments // Prioritize revealing fragments
if( nextFragment() === false ) { if( nextFragment() === false ) {
if( availableRoutes().down ) {
var routes = availableRoutes();
// When looping is enabled `routes.down` is always available
// so we need a separate check for when we've reached the
// end of a stack and should move horizontally
if( routes.down && routes.right && config.loop && Reveal.isLastVerticalSlide( currentSlide ) ) {
routes.down = false;
}
if( routes.down ) {
navigateDown(); navigateDown();
} }
else if( config.rtl ) { else if( config.rtl ) {
@ -5300,7 +5310,7 @@
// Returns true if we're currently on the last slide // Returns true if we're currently on the last slide
isLastSlide: function() { isLastSlide: function() {
if( currentSlide ) { if( currentSlide ) {
// Does this slide has next a sibling? // Does this slide have a next sibling?
if( currentSlide.nextElementSibling ) return false; if( currentSlide.nextElementSibling ) return false;
// If it's vertical, does its parent have a next sibling? // If it's vertical, does its parent have a next sibling?
@ -5312,6 +5322,19 @@
return false; return false;
}, },
// Returns true if we're on the last slide in the current
// vertical stack
isLastVerticalSlide: function() {
if( currentSlide && isVerticalSlide( currentSlide ) ) {
// Does this slide have a next sibling?
if( currentSlide.nextElementSibling ) return false;
return true;
}
return false;
},
// Checks if reveal.js has been loaded and is ready for use // Checks if reveal.js has been loaded and is ready for use
isReady: function() { isReady: function() {
return loaded; return loaded;