mirror of https://github.com/libsdl-org/SDL.git
wayland: Don't enable the text-input protocol when using Fcitx
Otherwise, key repeat will be broken. Enabling it under Wayland isn't recommended anyway.
This commit is contained in:
parent
dcc645e413
commit
2b375d9704
|
|
@ -2669,7 +2669,7 @@ void Wayland_create_primary_selection_device(SDL_VideoData *d)
|
|||
}
|
||||
}
|
||||
|
||||
void Wayland_create_text_input(SDL_VideoData *d)
|
||||
static void Wayland_create_text_input(SDL_VideoData *d)
|
||||
{
|
||||
SDL_WaylandTextInput *text_input = NULL;
|
||||
|
||||
|
|
@ -2696,6 +2696,23 @@ void Wayland_create_text_input(SDL_VideoData *d)
|
|||
}
|
||||
}
|
||||
|
||||
void Wayland_create_text_input_manager(SDL_VideoData *d, uint32_t id)
|
||||
{
|
||||
#ifdef HAVE_FCITX
|
||||
const char *im_module = SDL_getenv("SDL_IM_MODULE");
|
||||
if (im_module && SDL_strcmp(im_module, "fcitx") == 0) {
|
||||
/* Override the Wayland text-input protocol when Fcitx is enabled, like how GTK_IM_MODULE does.
|
||||
*
|
||||
* The Fcitx wiki discourages enabling it under Wayland via SDL_IM_MODULE, so its presence must
|
||||
* be intentional, and this workaround is needed for fixing key repeat detection.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
d->text_input_manager = wl_registry_bind(d->registry, id, &zwp_text_input_manager_v3_interface, 1);
|
||||
Wayland_create_text_input(d);
|
||||
}
|
||||
|
||||
// Pen/Tablet support...
|
||||
|
||||
|
|
|
|||
|
|
@ -157,7 +157,8 @@ extern int Wayland_WaitEventTimeout(SDL_VideoDevice *_this, Sint64 timeoutNS);
|
|||
|
||||
extern void Wayland_create_data_device(SDL_VideoData *d);
|
||||
extern void Wayland_create_primary_selection_device(SDL_VideoData *d);
|
||||
extern void Wayland_create_text_input(SDL_VideoData *d);
|
||||
|
||||
extern void Wayland_create_text_input_manager(SDL_VideoData *d, uint32_t id);
|
||||
|
||||
extern void Wayland_input_initialize_seat(SDL_VideoData *d);
|
||||
extern void Wayland_display_destroy_input(SDL_VideoData *d);
|
||||
|
|
|
|||
|
|
@ -1234,8 +1234,7 @@ static void display_handle_global(void *data, struct wl_registry *registry, uint
|
|||
} else if (SDL_strcmp(interface, "xdg_activation_v1") == 0) {
|
||||
d->activation_manager = wl_registry_bind(d->registry, id, &xdg_activation_v1_interface, 1);
|
||||
} else if (SDL_strcmp(interface, "zwp_text_input_manager_v3") == 0) {
|
||||
d->text_input_manager = wl_registry_bind(d->registry, id, &zwp_text_input_manager_v3_interface, 1);
|
||||
Wayland_create_text_input(d);
|
||||
Wayland_create_text_input_manager(d, id);
|
||||
} else if (SDL_strcmp(interface, "wl_data_device_manager") == 0) {
|
||||
d->data_device_manager = wl_registry_bind(d->registry, id, &wl_data_device_manager_interface, SDL_min(3, version));
|
||||
Wayland_create_data_device(d);
|
||||
|
|
|
|||
Loading…
Reference in New Issue