139 lines
5.4 KiB
C
139 lines
5.4 KiB
C
#include <wlr/types/wlr_pointer_gestures_v1.h>
|
|
#include "gestures.h"
|
|
#include "idle.h"
|
|
|
|
static void gesture_pinch_begin(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, pinch_begin);
|
|
struct wlr_pointer_pinch_begin_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_pinch_begin(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->fingers);
|
|
}
|
|
|
|
static void gesture_pinch_update(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, pinch_update);
|
|
struct wlr_pointer_pinch_update_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_pinch_update(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->dx, event->dy,
|
|
event->scale, event->rotation);
|
|
}
|
|
|
|
static void gesture_pinch_end(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, pinch_end);
|
|
struct wlr_pointer_pinch_end_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_pinch_end(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->cancelled);
|
|
}
|
|
|
|
static void gesture_swipe_begin(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, swipe_begin);
|
|
struct wlr_pointer_swipe_begin_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_swipe_begin(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->fingers);
|
|
}
|
|
|
|
static void gesture_swipe_update(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, swipe_update);
|
|
struct wlr_pointer_swipe_update_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_swipe_update(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->dx, event->dy);
|
|
}
|
|
|
|
static void gesture_swipe_end(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, swipe_end);
|
|
struct wlr_pointer_swipe_end_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_swipe_end(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->cancelled);
|
|
}
|
|
|
|
static void gesture_hold_begin(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, hold_begin);
|
|
struct wlr_pointer_hold_begin_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_hold_begin(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->fingers);
|
|
}
|
|
|
|
static void gesture_hold_end(struct wl_listener *listener, void *data)
|
|
{
|
|
struct diyac_seat *seat = wl_container_of(listener, seat, hold_end);
|
|
struct wlr_pointer_hold_end_event *event = data;
|
|
|
|
diya_idle_manager_notify_activity(seat->wlr_seat);
|
|
// cursor_set_visible(seat, /* visible */ true);
|
|
|
|
wlr_pointer_gestures_v1_send_hold_end(seat->pointer_gestures,
|
|
seat->wlr_seat, event->time_msec, event->cancelled);
|
|
}
|
|
|
|
void diyac_gestures_init(struct diyac_seat *seat)
|
|
{
|
|
seat->pinch_begin.notify = gesture_pinch_begin;
|
|
wl_signal_add(&seat->cursor->events.pinch_begin, &seat->pinch_begin);
|
|
|
|
seat->pinch_update.notify = gesture_pinch_update;
|
|
wl_signal_add(&seat->cursor->events.pinch_update, &seat->pinch_update);
|
|
|
|
seat->pinch_end.notify = gesture_pinch_end;
|
|
wl_signal_add(&seat->cursor->events.pinch_end, &seat->pinch_end);
|
|
|
|
seat->swipe_begin.notify = gesture_swipe_begin;
|
|
wl_signal_add(&seat->cursor->events.swipe_begin, &seat->swipe_begin);
|
|
|
|
seat->swipe_update.notify = gesture_swipe_update;
|
|
wl_signal_add(&seat->cursor->events.swipe_update, &seat->swipe_update);
|
|
|
|
seat->swipe_end.notify = gesture_swipe_end;
|
|
wl_signal_add(&seat->cursor->events.swipe_end, &seat->swipe_end);
|
|
|
|
seat->hold_begin.notify = gesture_hold_begin;
|
|
wl_signal_add(&seat->cursor->events.hold_begin, &seat->hold_begin);
|
|
|
|
seat->hold_end.notify = gesture_hold_end;
|
|
wl_signal_add(&seat->cursor->events.hold_end, &seat->hold_end);
|
|
}
|
|
|
|
void diyac_gestures_drop(struct diyac_seat *seat)
|
|
{
|
|
wl_list_remove(&seat->pinch_begin.link);
|
|
wl_list_remove(&seat->pinch_update.link);
|
|
wl_list_remove(&seat->pinch_end.link);
|
|
wl_list_remove(&seat->swipe_begin.link);
|
|
wl_list_remove(&seat->swipe_update.link);
|
|
wl_list_remove(&seat->swipe_end.link);
|
|
wl_list_remove(&seat->hold_begin.link);
|
|
wl_list_remove(&seat->hold_end.link);
|
|
} |