Explorar o código

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

Hakim El Hattab %!s(int64=6) %!d(string=hai) anos
pai
achega
325162692e
Modificáronse 1 ficheiros con 25 adicións e 2 borrados
  1. 25 2
      js/reveal.js

+ 25 - 2
js/reveal.js

@@ -4410,7 +4410,17 @@
 
 		// Prioritize revealing fragments
 		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();
 			}
 			else if( config.rtl ) {
@@ -5300,7 +5310,7 @@
 		// Returns true if we're currently on the last slide
 		isLastSlide: function() {
 			if( currentSlide ) {
-				// Does this slide has next a sibling?
+				// Does this slide have a next sibling?
 				if( currentSlide.nextElementSibling ) return false;
 
 				// If it's vertical, does its parent have a next sibling?
@@ -5312,6 +5322,19 @@
 			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
 		isReady: function() {
 			return loaded;