mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-05 18:08:03 +02:00
input: Split out pointer button sending from grab handler
We'll use it elsewhere later. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
f44942ea04
commit
c02ac11bd6
1 changed files with 27 additions and 16 deletions
|
|
@ -379,6 +379,32 @@ default_grab_pointer_motion(struct weston_pointer_grab *grab, uint32_t time,
|
|||
weston_pointer_send_relative_motion(pointer, time, event);
|
||||
}
|
||||
|
||||
static void
|
||||
weston_pointer_send_button(struct weston_pointer *pointer,
|
||||
uint32_t time, uint32_t button, uint32_t state_w)
|
||||
{
|
||||
struct wl_display *display = pointer->seat->compositor->wl_display;
|
||||
struct wl_list *resource_list;
|
||||
struct wl_resource *resource;
|
||||
uint32_t serial;
|
||||
|
||||
if (!pointer->focus_client)
|
||||
return;
|
||||
|
||||
resource_list = &pointer->focus_client->pointer_resources;
|
||||
if (resource_list && !wl_list_empty(resource_list)) {
|
||||
resource_list = &pointer->focus_client->pointer_resources;
|
||||
serial = wl_display_next_serial(display);
|
||||
wl_resource_for_each(resource, resource_list) {
|
||||
wl_pointer_send_button(resource,
|
||||
serial,
|
||||
time,
|
||||
button,
|
||||
state_w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
default_grab_pointer_button(struct weston_pointer_grab *grab,
|
||||
uint32_t time, uint32_t button, uint32_t state_w)
|
||||
|
|
@ -386,25 +412,10 @@ default_grab_pointer_button(struct weston_pointer_grab *grab,
|
|||
struct weston_pointer *pointer = grab->pointer;
|
||||
struct weston_compositor *compositor = pointer->seat->compositor;
|
||||
struct weston_view *view;
|
||||
struct wl_resource *resource;
|
||||
uint32_t serial;
|
||||
enum wl_pointer_button_state state = state_w;
|
||||
struct wl_display *display = compositor->wl_display;
|
||||
wl_fixed_t sx, sy;
|
||||
struct wl_list *resource_list = NULL;
|
||||
|
||||
if (pointer->focus_client)
|
||||
resource_list = &pointer->focus_client->pointer_resources;
|
||||
if (resource_list && !wl_list_empty(resource_list)) {
|
||||
resource_list = &pointer->focus_client->pointer_resources;
|
||||
serial = wl_display_next_serial(display);
|
||||
wl_resource_for_each(resource, resource_list)
|
||||
wl_pointer_send_button(resource,
|
||||
serial,
|
||||
time,
|
||||
button,
|
||||
state_w);
|
||||
}
|
||||
weston_pointer_send_button(pointer, time, button, state_w);
|
||||
|
||||
if (pointer->button_count == 0 &&
|
||||
state == WL_POINTER_BUTTON_STATE_RELEASED) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue