aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/types/wlr_cursor.h1
-rw-r--r--include/wlr/types/wlr_pointer.h1
-rw-r--r--include/wlr/types/wlr_seat.h15
3 files changed, 17 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_cursor.h b/include/wlr/types/wlr_cursor.h
index 44ced1f0..6475669c 100644
--- a/include/wlr/types/wlr_cursor.h
+++ b/include/wlr/types/wlr_cursor.h
@@ -51,6 +51,7 @@ struct wlr_cursor {
struct wl_signal motion_absolute;
struct wl_signal button;
struct wl_signal axis;
+ struct wl_signal frame;
struct wl_signal touch_up;
struct wl_signal touch_down;
diff --git a/include/wlr/types/wlr_pointer.h b/include/wlr/types/wlr_pointer.h
index 6da4c02a..9dfe7aaa 100644
--- a/include/wlr/types/wlr_pointer.h
+++ b/include/wlr/types/wlr_pointer.h
@@ -23,6 +23,7 @@ struct wlr_pointer {
struct wl_signal motion_absolute;
struct wl_signal button;
struct wl_signal axis;
+ struct wl_signal frame;
} events;
void *data;
diff --git a/include/wlr/types/wlr_seat.h b/include/wlr/types/wlr_seat.h
index f6df7413..103fa24d 100644
--- a/include/wlr/types/wlr_seat.h
+++ b/include/wlr/types/wlr_seat.h
@@ -68,6 +68,7 @@ struct wlr_pointer_grab_interface {
void (*axis)(struct wlr_seat_pointer_grab *grab, uint32_t time,
enum wlr_axis_orientation orientation, double value,
int32_t value_discrete, enum wlr_axis_source source);
+ void (*frame)(struct wlr_seat_pointer_grab *grab);
void (*cancel)(struct wlr_seat_pointer_grab *grab);
};
@@ -349,6 +350,13 @@ void wlr_seat_pointer_send_axis(struct wlr_seat *wlr_seat, uint32_t time,
int32_t value_discrete, enum wlr_axis_source source);
/**
+ * Send a frame event to the surface with pointer focus. Compositors should use
+ * `wlr_seat_pointer_notify_frame()` to send axis events to respect pointer
+ * grabs.
+ */
+void wlr_seat_pointer_send_frame(struct wlr_seat *wlr_seat);
+
+/**
* Start a grab of the pointer of this seat. The grabber is responsible for
* handling all pointer events until the grab ends.
*/
@@ -391,6 +399,13 @@ void wlr_seat_pointer_notify_axis(struct wlr_seat *wlr_seat, uint32_t time,
int32_t value_discrete, enum wlr_axis_source source);
/**
+ * Notify the seat of a frame event. Frame events are sent to end a group of
+ * events that logically belong together. Motion, button and axis events should
+ * all be followed by a frame event.
+ */
+void wlr_seat_pointer_notify_frame(struct wlr_seat *wlr_seat);
+
+/**
* Whether or not the pointer has a grab other than the default grab.
*/
bool wlr_seat_pointer_has_grab(struct wlr_seat *seat);