From a2e021ccdb9d6acfc9cfa92d334430fbc1d1366a Mon Sep 17 00:00:00 2001
From: David Banham <david.banham@gmail.com>
Date: Mon, 6 Aug 2012 11:20:08 +1000
Subject: [PATCH] Don't suppress the whole event, just add context metadata

---
 js/reveal.js               | 21 ++++++++++-----------
 plugin/multiplex/client.js |  2 +-
 plugin/multiplex/master.js |  2 +-
 3 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/js/reveal.js b/js/reveal.js
index 7d72652..d820943 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -653,7 +653,7 @@ var Reveal = (function(){
 	 * Updates the visual slides to represent the currently
 	 * set indices. 
 	 */
-	function slide( h, v, fireEvent ) {
+	function slide( h, v, origin ) {
 		// Remember where we were at before
 		previousSlide = currentSlide;
 
@@ -720,14 +720,13 @@ var Reveal = (function(){
 
 		// Dispatch an event if the slide changed
 		if( indexh !== indexhBefore || indexv !== indexvBefore ) {
-			if( fireEvent !== false ) {
-				dispatchEvent( 'slidechanged', {
-					'indexh': indexh, 
-					'indexv': indexv,
-					'previousSlide': previousSlide,
-					'currentSlide': currentSlide
-				} );
-			}
+			dispatchEvent( 'slidechanged', {
+				'origin': origin,
+				'indexh': indexh, 
+				'indexv': indexv,
+				'previousSlide': previousSlide,
+				'currentSlide': currentSlide
+			} );
 		}
 		else {
 			// Ensure that the previous slide is never the same as the current
@@ -903,8 +902,8 @@ var Reveal = (function(){
 	 * @param {Number} h The horizontal index of the slide to show
 	 * @param {Number} v The vertical index of the slide to show
 	 */
-	function navigateTo( h, v, fireEvent ) {
-		slide( h, v, fireEvent );
+	function navigateTo( h, v, origin ) {
+		slide( h, v, origin );
 	}
 	
 	function navigateLeft() {
diff --git a/plugin/multiplex/client.js b/plugin/multiplex/client.js
index 5e6b556..6fc0d4d 100644
--- a/plugin/multiplex/client.js
+++ b/plugin/multiplex/client.js
@@ -7,6 +7,6 @@
 		if (data.socketId !== socketId) { return; }
 		if( window.location.host === 'localhost:1947' ) return;
 
-		Reveal.navigateTo(data.indexh, data.indexv, false);
+		Reveal.navigateTo(data.indexh, data.indexv, 'remote');
 	});
 }());
diff --git a/plugin/multiplex/master.js b/plugin/multiplex/master.js
index cf629d9..3704fa4 100644
--- a/plugin/multiplex/master.js
+++ b/plugin/multiplex/master.js
@@ -27,6 +27,6 @@
 			socketId : multiplex.id
 		};
 
-		socket.emit('slidechanged', slideData);
+		if( event.origin !== 'remote') socket.emit('slidechanged', slideData);
 	} );
 }());
-- 
GitLab