--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef LABWC_GESTURES_H
+#define LABWC_GESTURES_H
+
+struct seat;
+
+void gestures_init(struct seat *seat);
+void gestures_finish(struct seat *seat);
+
+#endif /* LABWC_GESTURES_H */
#include <wlr/types/wlr_relative_pointer_v1.h>
#include <wlr/types/wlr_pointer.h>
#include <wlr/types/wlr_pointer_constraints_v1.h>
-#include <wlr/types/wlr_pointer_gestures_v1.h>
#include <wlr/types/wlr_seat.h>
#include <wlr/types/wlr_subcompositor.h>
#include <wlr/types/wlr_xcursor_manager.h>
#include "config/mousebind.h"
#include "dnd.h"
#include "idle.h"
+#include "input/gestures.h"
#include "labwc.h"
#include "menu/menu.h"
#include "regions.h"
wlr_seat_pointer_notify_frame(seat->seat);
}
-static void handle_pointer_pinch_begin(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, pinch_begin);
- struct wlr_pointer_pinch_begin_event *event = data;
- wlr_pointer_gestures_v1_send_pinch_begin(seat->pointer_gestures,
- seat->seat, event->time_msec, event->fingers);
-}
-
-static void handle_pointer_pinch_update(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, pinch_update);
- struct wlr_pointer_pinch_update_event *event = data;
- wlr_pointer_gestures_v1_send_pinch_update(seat->pointer_gestures,
- seat->seat, event->time_msec, event->dx, event->dy,
- event->scale, event->rotation);
-}
-
-static void handle_pointer_pinch_end(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, pinch_end);
- struct wlr_pointer_pinch_end_event *event = data;
- wlr_pointer_gestures_v1_send_pinch_end(seat->pointer_gestures,
- seat->seat, event->time_msec, event->cancelled);
-}
-
-static void handle_pointer_swipe_begin(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, swipe_begin);
- struct wlr_pointer_swipe_begin_event *event = data;
- wlr_pointer_gestures_v1_send_swipe_begin(seat->pointer_gestures,
- seat->seat, event->time_msec, event->fingers);
-}
-
-static void handle_pointer_swipe_update(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, swipe_update);
- struct wlr_pointer_swipe_update_event *event = data;
- wlr_pointer_gestures_v1_send_swipe_update(seat->pointer_gestures,
- seat->seat, event->time_msec, event->dx, event->dy);
-}
-
-static void handle_pointer_swipe_end(struct wl_listener *listener, void *data)
-{
- struct seat *seat = wl_container_of(listener, seat, swipe_end);
- struct wlr_pointer_swipe_end_event *event = data;
- wlr_pointer_gestures_v1_send_swipe_end(seat->pointer_gestures,
- seat->seat, event->time_msec, event->cancelled);
-}
-
void
cursor_init(struct seat *seat)
{
seat->cursor_frame.notify = cursor_frame;
wl_signal_add(&seat->cursor->events.frame, &seat->cursor_frame);
- seat->pointer_gestures = wlr_pointer_gestures_v1_create(seat->server->wl_display);
- seat->pinch_begin.notify = handle_pointer_pinch_begin;
- wl_signal_add(&seat->cursor->events.pinch_begin, &seat->pinch_begin);
- seat->pinch_update.notify = handle_pointer_pinch_update;
- wl_signal_add(&seat->cursor->events.pinch_update, &seat->pinch_update);
- seat->pinch_end.notify = handle_pointer_pinch_end;
- wl_signal_add(&seat->cursor->events.pinch_end, &seat->pinch_end);
- seat->swipe_begin.notify = handle_pointer_swipe_begin;
- wl_signal_add(&seat->cursor->events.swipe_begin, &seat->swipe_begin);
- seat->swipe_update.notify = handle_pointer_swipe_update;
- wl_signal_add(&seat->cursor->events.swipe_update, &seat->swipe_update);
- seat->swipe_end.notify = handle_pointer_swipe_end;
- wl_signal_add(&seat->cursor->events.swipe_end, &seat->swipe_end);
+ gestures_init(seat);
seat->request_cursor.notify = request_cursor_notify;
wl_signal_add(&seat->seat->events.request_set_cursor,
wl_list_remove(&seat->cursor_axis.link);
wl_list_remove(&seat->cursor_frame.link);
- 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);
+ gestures_finish(seat);
wl_list_remove(&seat->request_cursor.link);
wl_list_remove(&seat->request_set_selection.link);
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-only
+#include <wlr/types/wlr_pointer_gestures_v1.h>
+#include "input/gestures.h"
+#include "labwc.h"
+
+static void
+handle_pointer_pinch_begin(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, pinch_begin);
+ struct wlr_pointer_pinch_begin_event *event = data;
+ wlr_pointer_gestures_v1_send_pinch_begin(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->fingers);
+}
+
+static void
+handle_pointer_pinch_update(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, pinch_update);
+ struct wlr_pointer_pinch_update_event *event = data;
+ wlr_pointer_gestures_v1_send_pinch_update(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->dx, event->dy,
+ event->scale, event->rotation);
+}
+
+static void
+handle_pointer_pinch_end(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, pinch_end);
+ struct wlr_pointer_pinch_end_event *event = data;
+ wlr_pointer_gestures_v1_send_pinch_end(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->cancelled);
+}
+
+static void
+handle_pointer_swipe_begin(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, swipe_begin);
+ struct wlr_pointer_swipe_begin_event *event = data;
+ wlr_pointer_gestures_v1_send_swipe_begin(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->fingers);
+}
+
+static void
+handle_pointer_swipe_update(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, swipe_update);
+ struct wlr_pointer_swipe_update_event *event = data;
+ wlr_pointer_gestures_v1_send_swipe_update(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->dx, event->dy);
+}
+
+static void
+handle_pointer_swipe_end(struct wl_listener *listener, void *data)
+{
+ struct seat *seat = wl_container_of(listener, seat, swipe_end);
+ struct wlr_pointer_swipe_end_event *event = data;
+ wlr_pointer_gestures_v1_send_swipe_end(seat->pointer_gestures,
+ seat->seat, event->time_msec, event->cancelled);
+}
+
+void
+gestures_init(struct seat *seat)
+{
+ seat->pointer_gestures = wlr_pointer_gestures_v1_create(seat->server->wl_display);
+
+ seat->pinch_begin.notify = handle_pointer_pinch_begin;
+ wl_signal_add(&seat->cursor->events.pinch_begin, &seat->pinch_begin);
+
+ seat->pinch_update.notify = handle_pointer_pinch_update;
+ wl_signal_add(&seat->cursor->events.pinch_update, &seat->pinch_update);
+
+ seat->pinch_end.notify = handle_pointer_pinch_end;
+ wl_signal_add(&seat->cursor->events.pinch_end, &seat->pinch_end);
+
+ seat->swipe_begin.notify = handle_pointer_swipe_begin;
+ wl_signal_add(&seat->cursor->events.swipe_begin, &seat->swipe_begin);
+
+ seat->swipe_update.notify = handle_pointer_swipe_update;
+ wl_signal_add(&seat->cursor->events.swipe_update, &seat->swipe_update);
+
+ seat->swipe_end.notify = handle_pointer_swipe_end;
+ wl_signal_add(&seat->cursor->events.swipe_end, &seat->swipe_end);
+}
+
+void
+gestures_finish(struct 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);
+}
labwc_sources += files(
+ 'cursor.c',
+ 'gestures.c',
'keyboard.c',
'key-state.c',
'touch.c',
- 'cursor.c',
)