Browse Source

[HTML5] Fix input not focusing canvas.

mousedown and touchstart should focus the canvas to ensure correct
application lifecycle.
Fabio Alessandrelli 3 years ago
parent
commit
f13c7fc83e
1 changed files with 6 additions and 0 deletions
  1. 6 0
      platform/javascript/js/libs/library_godot_input.js

+ 6 - 0
platform/javascript/js/libs/library_godot_input.js

@@ -389,6 +389,9 @@ const GodotInput = {
 			const rect = canvas.getBoundingClientRect();
 			const pos = GodotInput.computePosition(evt, rect);
 			const modifiers = GodotInput.getModifiers(evt);
+			if (p_pressed && document.activeElement !== GodotConfig.canvas) {
+				GodotConfig.canvas.focus();
+			}
 			if (func(p_pressed, evt.button, pos[0], pos[1], modifiers)) {
 				evt.preventDefault();
 			}
@@ -405,6 +408,9 @@ const GodotInput = {
 		const func = GodotRuntime.get_func(callback);
 		const canvas = GodotConfig.canvas;
 		function touch_cb(type, evt) {
+			if (type === 0 && document.activeElement !== GodotConfig.canvas) {
+				GodotConfig.canvas.focus();
+			}
 			const rect = canvas.getBoundingClientRect();
 			const touches = evt.changedTouches;
 			for (let i = 0; i < touches.length; i++) {