wayland: Refactor pointer gesture .end emission event

We will want to trigger this from multiple places for cancellation.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2640>
This commit is contained in:
Carlos Garnacho 2022-09-23 15:52:20 +02:00 committed by Marge Bot
parent 0a234f320b
commit b85f85d665
3 changed files with 63 additions and 27 deletions

View File

@ -52,29 +52,41 @@ handle_hold_begin (MetaWaylandPointer *pointer,
}
}
static void
broadcast_end (MetaWaylandPointer *pointer,
uint32_t serial,
uint32_t time,
gboolean cancelled)
{
MetaWaylandPointerClient *pointer_client;
struct wl_resource *resource;
pointer_client = pointer->focus_client;
wl_resource_for_each (resource, &pointer_client->hold_gesture_resources)
{
zwp_pointer_gesture_hold_v1_send_end (resource, serial,
time, cancelled);
}
}
static void
handle_hold_end (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
gboolean cancelled = FALSE;
uint32_t serial;
pointer_client = pointer->focus_client;
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
if (event->touchpad_hold.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
cancelled = TRUE;
wl_resource_for_each (resource, &pointer_client->hold_gesture_resources)
{
zwp_pointer_gesture_hold_v1_send_end (resource, serial,
clutter_event_get_time (event),
cancelled);
}
broadcast_end (pointer, serial,
clutter_event_get_time (event),
cancelled);
}
gboolean

View File

@ -80,29 +80,41 @@ handle_pinch_update (MetaWaylandPointer *pointer,
}
}
static void
broadcast_end (MetaWaylandPointer *pointer,
uint32_t serial,
uint32_t time,
gboolean cancelled)
{
MetaWaylandPointerClient *pointer_client;
struct wl_resource *resource;
pointer_client = pointer->focus_client;
wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources)
{
zwp_pointer_gesture_pinch_v1_send_end (resource, serial,
time, cancelled);
}
}
static void
handle_pinch_end (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
gboolean cancelled = FALSE;
uint32_t serial;
pointer_client = pointer->focus_client;
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
if (event->touchpad_pinch.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
cancelled = TRUE;
wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources)
{
zwp_pointer_gesture_pinch_v1_send_end (resource, serial,
clutter_event_get_time (event),
cancelled);
}
broadcast_end (pointer, serial,
clutter_event_get_time (event),
cancelled);
}
gboolean

View File

@ -76,29 +76,41 @@ handle_swipe_update (MetaWaylandPointer *pointer,
}
}
static void
broadcast_end (MetaWaylandPointer *pointer,
uint32_t serial,
uint32_t time,
gboolean cancelled)
{
MetaWaylandPointerClient *pointer_client;
struct wl_resource *resource;
pointer_client = pointer->focus_client;
wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources)
{
zwp_pointer_gesture_swipe_v1_send_end (resource, serial,
time, cancelled);
}
}
static void
handle_swipe_end (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
gboolean cancelled = FALSE;
uint32_t serial;
pointer_client = pointer->focus_client;
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
if (event->touchpad_swipe.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
cancelled = TRUE;
wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources)
{
zwp_pointer_gesture_swipe_v1_send_end (resource, serial,
clutter_event_get_time (event),
cancelled);
}
broadcast_end (pointer, serial,
clutter_event_get_time (event),
cancelled);
}
gboolean