From e8f012c993e0584f8c7eb4ff1bb6367bd9f30f9e Mon Sep 17 00:00:00 2001 From: emersion Date: Fri, 1 Mar 2019 09:35:11 +0100 Subject: [PATCH] seat: only store serial if pressing a button The grab serial can be used to start a pointer grab. A button pressed event should be used for this purpose. Thus, we should only save the grab serial if it's the first button pressed event we send. This commit makes it so the serial is not saved if a button is released while another button is still pressed. --- types/seat/wlr_seat_pointer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/seat/wlr_seat_pointer.c b/types/seat/wlr_seat_pointer.c index 9a216fd6..1aabea0f 100644 --- a/types/seat/wlr_seat_pointer.c +++ b/types/seat/wlr_seat_pointer.c @@ -356,7 +356,8 @@ uint32_t wlr_seat_pointer_notify_button(struct wlr_seat *wlr_seat, struct wlr_seat_pointer_grab *grab = wlr_seat->pointer_state.grab; uint32_t serial = grab->interface->button(grab, time, button, state); - if (serial && wlr_seat->pointer_state.button_count == 1) { + if (serial && wlr_seat->pointer_state.button_count == 1 && + state == WL_POINTER_BUTTON_STATE_PRESSED) { wlr_seat->pointer_state.grab_serial = serial; }