diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | js/reveal.js | 51 |
2 files changed, 36 insertions, 16 deletions
@@ -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 { |