Browse Source

* Mobile Linear Navigation: Fix swipes to navigate linearly

Zach DeCook 5 years ago
parent
commit
969e7b3ef1
1 changed files with 35 additions and 5 deletions
  1. 35 5
      js/reveal.js

+ 35 - 5
js/reveal.js

@@ -3951,7 +3951,7 @@
 			}
 		}
 
-		if( config.navigationMode === "linear" ) {
+		if( config.navigationMode === 'linear' ) {
 			routes.right = routes.right || routes.down;
 			routes.left = routes.left || routes.up;
 		}
@@ -5441,19 +5441,49 @@
 
 				if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
 					touch.captured = true;
-					navigateLeft();
+					if (config.navigationMode === 'linear') {
+						if( config.rtl ) {
+							navigateNext();
+						}
+						else {
+							navigatePrev();
+						}
+					}
+					else {
+						navigateLeft();
+					}
 				}
 				else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
 					touch.captured = true;
-					navigateRight();
+					if (config.navigationMode === 'linear') {
+						if( config.rtl ) {
+							navigatePrev();
+						}
+						else {
+							navigateNext();
+						}
+					}
+					else {
+						navigateRight();
+					}
 				}
 				else if( deltaY > touch.threshold ) {
 					touch.captured = true;
-					navigateUp();
+					if (config.navigationMode === 'linear') {
+						navigatePrev();
+					}
+					else {
+						navigateUp();
+					}
 				}
 				else if( deltaY < -touch.threshold ) {
 					touch.captured = true;
-					navigateDown();
+					if (config.navigationMode === 'linear') {
+						navigateNext();
+					}
+					else {
+						navigateDown();
+					}
 				}
 
 				// If we're embedded, only block touch events if they have