|
@@ -1005,14 +1005,8 @@ static void Emscripten_unset_drag_event_callbacks(SDL_WindowData *data)
|
|
|
}, data->canvas_id);
|
|
|
}
|
|
|
|
|
|
-static const char *Emscripten_GetKeyboardTargetElement()
|
|
|
+static const char *Emscripten_GetKeyboardTargetElement(const char *target)
|
|
|
{
|
|
|
- const char *target = SDL_GetHint(SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT);
|
|
|
-
|
|
|
- if (!target || !*target) {
|
|
|
- return EMSCRIPTEN_EVENT_TARGET_WINDOW;
|
|
|
- }
|
|
|
-
|
|
|
if (SDL_strcmp(target, "#none") == 0) {
|
|
|
return NULL;
|
|
|
} else if (SDL_strcmp(target, "#window") == 0) {
|
|
@@ -1053,8 +1047,7 @@ void Emscripten_RegisterEventHandlers(SDL_WindowData *data)
|
|
|
|
|
|
emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, data, 0, Emscripten_HandlePointerLockChange);
|
|
|
|
|
|
- // Keyboard events are awkward
|
|
|
- keyElement = Emscripten_GetKeyboardTargetElement();
|
|
|
+ keyElement = Emscripten_GetKeyboardTargetElement(data->keyboard_element);
|
|
|
if (keyElement) {
|
|
|
emscripten_set_keydown_callback(keyElement, data, 0, Emscripten_HandleKey);
|
|
|
emscripten_set_keyup_callback(keyElement, data, 0, Emscripten_HandleKey);
|
|
@@ -1079,7 +1072,7 @@ void Emscripten_RegisterEventHandlers(SDL_WindowData *data)
|
|
|
|
|
|
void Emscripten_UnregisterEventHandlers(SDL_WindowData *data)
|
|
|
{
|
|
|
- const char *target;
|
|
|
+ const char *keyElement;
|
|
|
|
|
|
// !!! FIXME: currently Emscripten doesn't have a Drop Events functions like emscripten_set_*_callback, but we should use those when they do:
|
|
|
Emscripten_unset_drag_event_callbacks(data);
|
|
@@ -1111,11 +1104,11 @@ void Emscripten_UnregisterEventHandlers(SDL_WindowData *data)
|
|
|
|
|
|
emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, 0, NULL);
|
|
|
|
|
|
- target = Emscripten_GetKeyboardTargetElement();
|
|
|
- if (target) {
|
|
|
- emscripten_set_keydown_callback(target, NULL, 0, NULL);
|
|
|
- emscripten_set_keyup_callback(target, NULL, 0, NULL);
|
|
|
- emscripten_set_keypress_callback(target, NULL, 0, NULL);
|
|
|
+ keyElement = Emscripten_GetKeyboardTargetElement(data->keyboard_element);
|
|
|
+ if (keyElement) {
|
|
|
+ emscripten_set_keydown_callback(keyElement, NULL, 0, NULL);
|
|
|
+ emscripten_set_keyup_callback(keyElement, NULL, 0, NULL);
|
|
|
+ emscripten_set_keypress_callback(keyElement, NULL, 0, NULL);
|
|
|
}
|
|
|
|
|
|
emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, 0, NULL);
|