automatically hide the mouse pointer after 5s of inactivity (#1837)
This commit is contained in:
		| @@ -326,6 +326,12 @@ Reveal.initialize({ | |||||||
| 	// Enable slide navigation via mouse wheel | 	// Enable slide navigation via mouse wheel | ||||||
| 	mouseWheel: false, | 	mouseWheel: false, | ||||||
|  |  | ||||||
|  | 	// Hide cursor if inactive | ||||||
|  | 	hideInactiveCursor: true, | ||||||
|  |  | ||||||
|  | 	// Time before the cursor is hidden (in ms) | ||||||
|  | 	hideCursorTime: 5000, | ||||||
|  |  | ||||||
| 	// Hides the address bar on mobile devices | 	// Hides the address bar on mobile devices | ||||||
| 	hideAddressBar: true, | 	hideAddressBar: true, | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										66
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -220,6 +220,12 @@ | |||||||
| 			// The display mode that will be used to show slides | 			// The display mode that will be used to show slides | ||||||
| 			display: 'block', | 			display: 'block', | ||||||
|  |  | ||||||
|  | 			// Hide cursor if inactive | ||||||
|  | 			hideInactiveCursor: true, | ||||||
|  |  | ||||||
|  | 			// Time before the cursor is hidden (in ms) | ||||||
|  | 			hideCursorTime: 5000, | ||||||
|  |  | ||||||
| 			// Script dependencies to load | 			// Script dependencies to load | ||||||
| 			dependencies: [] | 			dependencies: [] | ||||||
|  |  | ||||||
| @@ -282,6 +288,12 @@ | |||||||
| 		// Delays updates to the URL due to a Chrome thumbnailer bug | 		// Delays updates to the URL due to a Chrome thumbnailer bug | ||||||
| 		writeURLTimeout = 0, | 		writeURLTimeout = 0, | ||||||
|  |  | ||||||
|  | 		// Is the mouse pointer currently hidden from view | ||||||
|  | 		cursorHidden = false, | ||||||
|  |  | ||||||
|  | 		// Timeout used to determine when the cursor is inactive | ||||||
|  | 		cursorInactiveTimeout = 0, | ||||||
|  |  | ||||||
| 		// Flags if the interaction event listeners are bound | 		// Flags if the interaction event listeners are bound | ||||||
| 		eventsAreBound = false, | 		eventsAreBound = false, | ||||||
|  |  | ||||||
| @@ -1253,6 +1265,18 @@ | |||||||
| 			disableRollingLinks(); | 			disableRollingLinks(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		// Auto-hide the mouse pointer when its inactive | ||||||
|  | 		if( config.hideInactiveCursor ) { | ||||||
|  | 			document.addEventListener( 'mousemove', onDocumentCursorActive, false ); | ||||||
|  | 			document.addEventListener( 'mousedown', onDocumentCursorActive, false ); | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			showCursor(); | ||||||
|  |  | ||||||
|  | 			document.removeEventListener( 'mousemove', onDocumentCursorActive, false ); | ||||||
|  | 			document.removeEventListener( 'mousedown', onDocumentCursorActive, false ); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		// Iframe link previews | 		// Iframe link previews | ||||||
| 		if( config.previewLinks ) { | 		if( config.previewLinks ) { | ||||||
| 			enablePreviewLinks(); | 			enablePreviewLinks(); | ||||||
| @@ -2479,6 +2503,32 @@ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Shows the mouse pointer after it has been hidden with | ||||||
|  | 	 * #hideCursor. | ||||||
|  | 	 */ | ||||||
|  | 	function showCursor() { | ||||||
|  |  | ||||||
|  | 		if( cursorHidden ) { | ||||||
|  | 			cursorHidden = false; | ||||||
|  | 			dom.wrapper.style.cursor = ''; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Hides the mouse pointer when it's on top of the .reveal | ||||||
|  | 	 * container. | ||||||
|  | 	 */ | ||||||
|  | 	function hideCursor() { | ||||||
|  |  | ||||||
|  | 		if( cursorHidden === false ) { | ||||||
|  | 			cursorHidden = true; | ||||||
|  | 			dom.wrapper.style.cursor = 'none'; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Enters the paused mode which fades everything on screen to | 	 * Enters the paused mode which fades everything on screen to | ||||||
| 	 * black. | 	 * black. | ||||||
| @@ -4731,6 +4781,22 @@ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Called whenever there is mouse input at the document level | ||||||
|  | 	 * to determine if the cursor is active or not. | ||||||
|  | 	 * | ||||||
|  | 	 * @param {object} event | ||||||
|  | 	 */ | ||||||
|  | 	function onDocumentCursorActive( event ) { | ||||||
|  |  | ||||||
|  | 		showCursor(); | ||||||
|  |  | ||||||
|  | 		clearTimeout( cursorInactiveTimeout ); | ||||||
|  |  | ||||||
|  | 		cursorInactiveTimeout = setTimeout( hideCursor, config.hideCursorTime ); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Handler for the document level 'keypress' event. | 	 * Handler for the document level 'keypress' event. | ||||||
| 	 * | 	 * | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user