fix: set wrong keyboard_grab in handle_input_method_grab_keyboard

This results in the inability to continuously use the mod key and mouse
to drag the window

the problem also in axisbind and gesturebind
This commit is contained in:
DreamMaoMao 2025-08-12 11:31:54 +08:00
parent 3346c8a099
commit 27aeec703c
2 changed files with 9 additions and 4 deletions

View file

@ -1545,7 +1545,7 @@ axisnotify(struct wl_listener *listener, void *data) {
// IDLE_NOTIFY_ACTIVITY;
handlecursoractivity();
wlr_idle_notifier_v1_notify_activity(idle_notifier, seat);
keyboard = wlr_seat_get_keyboard(seat);
keyboard = &kb_group->wlr_group->keyboard;
// 获取当前按键的mask,比如alt+super或者alt+ctrl
mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0;
@ -1610,7 +1610,7 @@ int ongesture(struct wlr_pointer_swipe_end_event *event) {
motion = swipe_dy < 0 ? SWIPE_UP : SWIPE_DOWN;
}
keyboard = wlr_seat_get_keyboard(seat);
keyboard = &kb_group->wlr_group->keyboard;
mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0;
for (ji = 0; ji < config.gesture_bindings_count; ji++) {
@ -1773,7 +1773,7 @@ buttonpress(struct wl_listener *listener, void *data) {
}
}
keyboard = wlr_seat_get_keyboard(seat);
keyboard = &kb_group->wlr_group->keyboard;
mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0;
for (ji = 0; ji < config.mouse_bindings_count; ji++) {
if (config.mouse_bindings_count < 1)
@ -3165,6 +3165,7 @@ void keypressmod(struct wl_listener *listener, void *data) {
KeyboardGroup *group = wl_container_of(listener, group, modifiers);
if (!dwl_im_keyboard_grab_forward_modifiers(group)) {
wlr_seat_set_keyboard(seat, &group->wlr_group->keyboard);
/* Send modifiers to the client. */
wlr_seat_keyboard_notify_modifiers(