diff options
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/types/wlr_cursor.h | 1 | ||||
-rw-r--r-- | include/wlr/types/wlr_pointer.h | 1 | ||||
-rw-r--r-- | include/wlr/types/wlr_seat.h | 15 |
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); |