Browse Source

ensure notes window fragment states are mirrored in main window #538

Hakim El Hattab 10 years ago
parent
commit
53f1f110c8
3 changed files with 23 additions and 8 deletions
  1. 3 2
      js/reveal.js
  2. 1 1
      js/reveal.min.js
  3. 19 5
      plugin/notes/notes.html

+ 3 - 2
js/reveal.js

@@ -1898,8 +1898,9 @@ var Reveal = (function(){
 		}
 
 		if( !slide && currentSlide ) {
-			var visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );
-			if( visibleFragments.length ) {
+			var hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0;
+			if( hasFragments ) {
+				var visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );
 				f = visibleFragments.length;
 			}
 		}

File diff suppressed because it is too large
+ 1 - 1
js/reveal.min.js


+ 19 - 5
plugin/notes/notes.html

@@ -169,7 +169,8 @@
 
 					var notes = document.getElementById( 'notes' ),
 						currentSlide = document.getElementById( 'current-slide' ),
-						nextSlide = document.getElementById( 'next-slide' );
+						nextSlide = document.getElementById( 'next-slide' ),
+						silenced = false;
 
 					window.addEventListener( 'message', function( event ) {
 						var data = JSON.parse( event.data );
@@ -184,10 +185,14 @@
 							}
 						}
 
+						silenced = true;
+
 						// Update the note slides
 						currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv, data.indexf );
 						nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
 
+						silenced = false;
+
 					}, false );
 
 					var start = new Date(),
@@ -218,12 +223,21 @@
 
 					}, 1000 );
 
-					// Navigate the main window when the notes slide changes
-					currentSlide.contentWindow.Reveal.addEventListener( 'slidechanged', function( event ) {
+					// Broadcasts the state of the notes window to synchronize
+					// the main window
+					function synchronizeMainWindow() {
 
-						window.opener.Reveal.slide( event.indexh, event.indexv );
+						if( !silenced ) {
+							var indices = currentSlide.contentWindow.Reveal.getIndices();
+							window.opener.Reveal.slide( indices.h, indices.v, indices.f );
+						}
+
+					}
 
-					} );
+					// Navigate the main window when the notes slide changes
+					currentSlide.contentWindow.Reveal.addEventListener( 'slidechanged', synchronizeMainWindow );
+					currentSlide.contentWindow.Reveal.addEventListener( 'fragmentshown', synchronizeMainWindow );
+					currentSlide.contentWindow.Reveal.addEventListener( 'fragmenthidden', synchronizeMainWindow );
 
 				}
 				else {

Some files were not shown because too many files changed in this diff