wayland: Suppress initial keymap changed events during initialization

This commit is contained in:
Frank Praznik
2025-10-04 10:43:40 -04:00
parent 8fda4231cf
commit bcf3afb6f3

View File

@@ -307,10 +307,12 @@ void Wayland_DisplayInitCursorShapeManager(SDL_VideoData *display)
static void Wayland_SeatSetKeymap(SDL_WaylandSeat *seat) static void Wayland_SeatSetKeymap(SDL_WaylandSeat *seat)
{ {
const bool send_event = !seat->display->initializing;
if (seat->keyboard.sdl_keymap && if (seat->keyboard.sdl_keymap &&
seat->keyboard.xkb.current_layout < seat->keyboard.xkb.num_layouts && seat->keyboard.xkb.current_layout < seat->keyboard.xkb.num_layouts &&
seat->keyboard.sdl_keymap[seat->keyboard.xkb.current_layout] != SDL_GetCurrentKeymap(true)) { seat->keyboard.sdl_keymap[seat->keyboard.xkb.current_layout] != SDL_GetCurrentKeymap(true)) {
SDL_SetKeymap(seat->keyboard.sdl_keymap[seat->keyboard.xkb.current_layout], true); SDL_SetKeymap(seat->keyboard.sdl_keymap[seat->keyboard.xkb.current_layout], send_event);
SDL_SetModState(seat->keyboard.pressed_modifiers | seat->keyboard.locked_modifiers); SDL_SetModState(seat->keyboard.pressed_modifiers | seat->keyboard.locked_modifiers);
} }
} }
@@ -3531,7 +3533,6 @@ void Wayland_DisplayCreateSeat(SDL_VideoData *display, struct wl_seat *wl_seat,
seat->wl_seat = wl_seat; seat->wl_seat = wl_seat;
seat->display = display; seat->display = display;
seat->registry_id = id; seat->registry_id = id;
seat->keyboard.xkb.current_layout = XKB_LAYOUT_INVALID;
Wayland_SeatCreateDataDevice(seat); Wayland_SeatCreateDataDevice(seat);
Wayland_SeatCreatePrimarySelectionDevice(seat); Wayland_SeatCreatePrimarySelectionDevice(seat);