[HTML5] Fix input not focusing canvas.

mousedown and touchstart should focus the canvas to ensure correct
application lifecycle.

(cherry picked from commit f13c7fc83e)
This commit is contained in:
Fabio Alessandrelli 2021-11-19 03:46:04 +01:00 committed by Rémi Verschelde
parent 393c7959ef
commit 1066b60781
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

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