Browse Source

Merge pull request #55342 from Faless/js/4.x_input_fix_focus_iframe

Rémi Verschelde 3 years ago
parent
commit
1b9fb5c969
1 changed files with 6 additions and 2 deletions
  1. 6 2
      platform/javascript/js/libs/library_godot_input.js

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

@@ -393,7 +393,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) {
+			// Since the event is consumed, focus manually.
+			// NOTE: The iframe container may not have focus yet, so focus even when already active.
+			if (p_pressed) {
 				GodotConfig.canvas.focus();
 			}
 			if (func(p_pressed, evt.button, pos[0], pos[1], modifiers)) {
@@ -412,7 +414,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) {
+			// Since the event is consumed, focus manually.
+			// NOTE: The iframe container may not have focus yet, so focus even when already active.
+			if (type === 0) {
 				GodotConfig.canvas.focus();
 			}
 			const rect = canvas.getBoundingClientRect();