mirror of
https://github.com/brl/mutter.git
synced 2025-02-09 01:54:10 +00:00
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:
parent
0a234f320b
commit
b85f85d665
@ -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
|
static void
|
||||||
handle_hold_end (MetaWaylandPointer *pointer,
|
handle_hold_end (MetaWaylandPointer *pointer,
|
||||||
const ClutterEvent *event)
|
const ClutterEvent *event)
|
||||||
{
|
{
|
||||||
MetaWaylandPointerClient *pointer_client;
|
|
||||||
MetaWaylandSeat *seat;
|
MetaWaylandSeat *seat;
|
||||||
struct wl_resource *resource;
|
|
||||||
gboolean cancelled = FALSE;
|
gboolean cancelled = FALSE;
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
|
|
||||||
pointer_client = pointer->focus_client;
|
|
||||||
seat = meta_wayland_pointer_get_seat (pointer);
|
seat = meta_wayland_pointer_get_seat (pointer);
|
||||||
serial = wl_display_next_serial (seat->wl_display);
|
serial = wl_display_next_serial (seat->wl_display);
|
||||||
|
|
||||||
if (event->touchpad_hold.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
if (event->touchpad_hold.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
||||||
cancelled = TRUE;
|
cancelled = TRUE;
|
||||||
|
|
||||||
wl_resource_for_each (resource, &pointer_client->hold_gesture_resources)
|
broadcast_end (pointer, serial,
|
||||||
{
|
clutter_event_get_time (event),
|
||||||
zwp_pointer_gesture_hold_v1_send_end (resource, serial,
|
cancelled);
|
||||||
clutter_event_get_time (event),
|
|
||||||
cancelled);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -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
|
static void
|
||||||
handle_pinch_end (MetaWaylandPointer *pointer,
|
handle_pinch_end (MetaWaylandPointer *pointer,
|
||||||
const ClutterEvent *event)
|
const ClutterEvent *event)
|
||||||
{
|
{
|
||||||
MetaWaylandPointerClient *pointer_client;
|
|
||||||
MetaWaylandSeat *seat;
|
MetaWaylandSeat *seat;
|
||||||
struct wl_resource *resource;
|
|
||||||
gboolean cancelled = FALSE;
|
gboolean cancelled = FALSE;
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
|
|
||||||
pointer_client = pointer->focus_client;
|
|
||||||
seat = meta_wayland_pointer_get_seat (pointer);
|
seat = meta_wayland_pointer_get_seat (pointer);
|
||||||
serial = wl_display_next_serial (seat->wl_display);
|
serial = wl_display_next_serial (seat->wl_display);
|
||||||
|
|
||||||
if (event->touchpad_pinch.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
if (event->touchpad_pinch.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
||||||
cancelled = TRUE;
|
cancelled = TRUE;
|
||||||
|
|
||||||
wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources)
|
broadcast_end (pointer, serial,
|
||||||
{
|
clutter_event_get_time (event),
|
||||||
zwp_pointer_gesture_pinch_v1_send_end (resource, serial,
|
cancelled);
|
||||||
clutter_event_get_time (event),
|
|
||||||
cancelled);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -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
|
static void
|
||||||
handle_swipe_end (MetaWaylandPointer *pointer,
|
handle_swipe_end (MetaWaylandPointer *pointer,
|
||||||
const ClutterEvent *event)
|
const ClutterEvent *event)
|
||||||
{
|
{
|
||||||
MetaWaylandPointerClient *pointer_client;
|
|
||||||
MetaWaylandSeat *seat;
|
MetaWaylandSeat *seat;
|
||||||
struct wl_resource *resource;
|
|
||||||
gboolean cancelled = FALSE;
|
gboolean cancelled = FALSE;
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
|
|
||||||
pointer_client = pointer->focus_client;
|
|
||||||
seat = meta_wayland_pointer_get_seat (pointer);
|
seat = meta_wayland_pointer_get_seat (pointer);
|
||||||
serial = wl_display_next_serial (seat->wl_display);
|
serial = wl_display_next_serial (seat->wl_display);
|
||||||
|
|
||||||
if (event->touchpad_swipe.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
if (event->touchpad_swipe.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
|
||||||
cancelled = TRUE;
|
cancelled = TRUE;
|
||||||
|
|
||||||
wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources)
|
broadcast_end (pointer, serial,
|
||||||
{
|
clutter_event_get_time (event),
|
||||||
zwp_pointer_gesture_swipe_v1_send_end (resource, serial,
|
cancelled);
|
||||||
clutter_event_get_time (event),
|
|
||||||
cancelled);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
Loading…
x
Reference in New Issue
Block a user