diff options
| author | Max Hilbrunner <mhilbrunner@users.noreply.github.com> | 2018-05-10 15:01:24 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-10 15:01:24 +0200 | 
| commit | f20af4b632e7c715ba391aaac0dcce8097f09e00 (patch) | |
| tree | dfea9a4c27faadf2cfb59511e7a18b35c51ce21c | |
| parent | b72424c88b08595fb9fe7f5d9f32403742878c58 (diff) | |
| parent | 9080e96bc81328e658a03e2cd248c06ddbf9f2ec (diff) | |
Merge pull request #18753 from eska014/html5-iframefocus
Fix keyboard focus lock-out with HTML5 canvas in iframe
| -rw-r--r-- | misc/dist/html/default.html | 2 | ||||
| -rw-r--r-- | platform/javascript/engine.js | 4 | ||||
| -rw-r--r-- | platform/javascript/os_javascript.cpp | 10 | 
3 files changed, 10 insertions, 6 deletions
diff --git a/misc/dist/html/default.html b/misc/dist/html/default.html index 4e3515a7b6..4aa9347fec 100644 --- a/misc/dist/html/default.html +++ b/misc/dist/html/default.html @@ -195,7 +195,7 @@ $GODOT_HEAD_INCLUDE  </head>  <body>  	<div id="container"> -		<canvas id="canvas" oncontextmenu="event.preventDefault();" width="640" height="480"> +		<canvas id="canvas" width="640" height="480">  			HTML5 canvas appears to be unsupported in the current browser.<br />  			Please try updating or use a different browser.  		</canvas> diff --git a/platform/javascript/engine.js b/platform/javascript/engine.js index e4839af433..e3a28083a0 100644 --- a/platform/javascript/engine.js +++ b/platform/javascript/engine.js @@ -161,6 +161,10 @@  			actualCanvas.style.padding = 0;  			actualCanvas.style.borderWidth = 0;  			actualCanvas.style.borderStyle = 'none'; +			// disable right-click context menu +			actualCanvas.addEventListener('contextmenu', function(ev) { +				ev.preventDefault(); +			}, false);  			// until context restoration is implemented  			actualCanvas.addEventListener('webglcontextlost', function(ev) {  				alert("WebGL context lost, please reload the page"); diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index a55609df58..6c6e4d2d1c 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -167,10 +167,9 @@ static EM_BOOL _mousebutton_callback(int event_type, const EmscriptenMouseEvent  	int mask = _input->get_mouse_button_mask();  	int button_flag = 1 << (ev->get_button_index() - 1);  	if (ev->is_pressed()) { -		// since the event is consumed, focus manually -		if (!is_canvas_focused()) { -			focus_canvas(); -		} +		// Since the event is consumed, focus manually. The containing iframe, +		// if used, may not have focus yet, so focus even if already focused. +		focus_canvas();  		mask |= button_flag;  	} else if (mask & button_flag) {  		mask &= ~button_flag; @@ -181,7 +180,8 @@ static EM_BOOL _mousebutton_callback(int event_type, const EmscriptenMouseEvent  	ev->set_button_mask(mask);  	_input->parse_input_event(ev); -	// prevent selection dragging +	// Prevent multi-click text selection and wheel-click scrolling anchor. +	// Context menu is prevented through contextmenu event.  	return true;  }  |