mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-06 06:34:35 +00:00
Revert "Don't enable the text-input protocol when using Fcitx"
It turns out that some distros set SDL_IM_MODULE globally, which leads to broken text input with this check, and there really is no reason not to use the text input protocol when available.
Reverts 2b375d9704
This commit is contained in:
parent
f8a4fbf128
commit
d6f6421973
3 changed files with 4 additions and 17 deletions
|
|
@ -3235,22 +3235,8 @@ static void Wayland_SeatCreateTextInput(SDL_WaylandSeat *seat)
|
|||
}
|
||||
}
|
||||
|
||||
void Wayland_DisplayCreateTextInputManager(SDL_VideoData *d, uint32_t id)
|
||||
void Wayland_DisplayInitTextInputManager(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);
|
||||
|
||||
SDL_WaylandSeat *seat;
|
||||
wl_list_for_each(seat, &d->seat_list, link) {
|
||||
Wayland_SeatCreateTextInput(seat);
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ extern void Wayland_DisplayInitTabletManager(SDL_VideoData *display);
|
|||
extern void Wayland_DisplayInitDataDeviceManager(SDL_VideoData *display);
|
||||
extern void Wayland_DisplayInitPrimarySelectionDeviceManager(SDL_VideoData *display);
|
||||
|
||||
extern void Wayland_DisplayCreateTextInputManager(SDL_VideoData *d, uint32_t id);
|
||||
extern void Wayland_DisplayInitTextInputManager(SDL_VideoData *d, uint32_t id);
|
||||
|
||||
extern void Wayland_DisplayCreateSeat(SDL_VideoData *display, struct wl_seat *wl_seat, Uint32 id);
|
||||
extern void Wayland_SeatDestroy(SDL_WaylandSeat *seat, bool shutting_down);
|
||||
|
|
|
|||
|
|
@ -1293,7 +1293,8 @@ static void handle_registry_global(void *data, struct wl_registry *registry, uin
|
|||
} 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) {
|
||||
Wayland_DisplayCreateTextInputManager(d, id);
|
||||
d->text_input_manager = wl_registry_bind(d->registry, id, &zwp_text_input_manager_v3_interface, 1);
|
||||
Wayland_DisplayInitTextInputManager(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_DisplayInitDataDeviceManager(d);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue