From 0cd3b8d4309b20c189cc4c7c8a5e56d7e47d594b Mon Sep 17 00:00:00 2001
From: Hakim El Hattab <hakim.elhattab@gmail.com>
Date: Wed, 28 Mar 2012 01:16:16 -0400
Subject: [PATCH] merge prev/next navigation pull request with modifications

---
 README.md    |  1 +
 js/reveal.js | 51 +++++++++++++++++++++++++++++++++++----------------
 2 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/README.md b/README.md
index 647d07c..1548b90 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,7 @@ Reveal.initialize({
 - Support for mouse wheel navigation ([naugtur](https://github.com/naugtur))
 - Delayed updates to URL hash to work around a bug in Chrome
 - Included a classList polyfill for IE9
+- Support for wireless presenter keys
 
 #### 1.1
 
diff --git a/js/reveal.js b/js/reveal.js
index adc5278..885884f 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -659,22 +659,41 @@ var Reveal = (function(){
 			slide();
 		}
 	}
-    function navigatePrev() {
-        if( availableRoutes().up ) navigateUp();
-        else {
-            // Go to last slide in previous vertical stack
-            var pastSlides = document.querySelectorAll('#reveal .slides>section.past');
-            if( pastSlides.length > 0 ) {
-                var prevVerticalSlides = pastSlides[pastSlides.length - 1].querySelectorAll('section');
-                indexv = prevVerticalSlides.length > 0 ? prevVerticalSlides.length - 1 : 0;
-                indexh --;
-                slide();
-            }
-        }
-    }
-    function navigateNext() {
-        availableRoutes().down ? navigateDown() : navigateRight();
-    }
+
+	/**
+	 * Navigates backwards, prioritized in the following order:
+	 * 1) Previous fragment
+	 * 2) Previous vertical slide
+	 * 3) Previous horizontal slide
+	 */
+	function navigatePrev() {
+		// Prioritize revealing fragments
+		if( previousFragment() === false ) {
+			if( availableRoutes().up ) {
+				navigateUp();
+			}
+			else {
+				// Fetch the previous horizontal slide, if there is one
+				var previousSlide = document.querySelector( '#reveal .slides>section.past:nth-child(' + indexh + ')' );
+
+				if( previousSlide ) {
+					indexv = ( previousSlide.querySelectorAll('section').length + 1 ) || 0;
+					indexh --;
+					slide();
+				}
+			}
+		}
+	}
+
+	/**
+	 * Same as #navigatePrev() but navigates forwards.
+	 */
+	function navigateNext() {
+		// Prioritize revealing fragments
+		if( nextFragment() === false ) {
+			availableRoutes().down ? navigateDown() : navigateRight();
+		}
+	}
 	
 	// Expose some methods publicly
 	return {
-- 
GitLab