diff options
Diffstat (limited to 'include/sway/input')
-rw-r--r-- | include/sway/input/cursor.h | 9 | ||||
-rw-r--r-- | include/sway/input/seat.h | 44 |
2 files changed, 25 insertions, 28 deletions
diff --git a/include/sway/input/cursor.h b/include/sway/input/cursor.h index 98eb4679..516718c9 100644 --- a/include/sway/input/cursor.h +++ b/include/sway/input/cursor.h @@ -52,8 +52,6 @@ struct sway_cursor { struct wl_event_source *hide_source; bool hidden; - // Mouse binding state - uint32_t pressed_buttons[SWAY_CURSOR_PRESSED_BUTTONS_CAP]; size_t pressed_button_count; }; @@ -78,13 +76,6 @@ void cursor_handle_activity(struct sway_cursor *cursor); void cursor_unhide(struct sway_cursor *cursor); int cursor_get_timeout(struct sway_cursor *cursor); -/** - * Like cursor_rebase, but also allows focus to change when the cursor enters a - * new container. - */ -void cursor_send_pointer_motion(struct sway_cursor *cursor, uint32_t time_msec, - struct sway_node *node, struct wlr_surface *surface, double sx, double sy); - void dispatch_cursor_button(struct sway_cursor *cursor, struct wlr_input_device *device, uint32_t time_msec, uint32_t button, enum wlr_button_state state); diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index ff4476d1..a5361e8c 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -12,12 +12,15 @@ struct sway_seatop_impl { void (*button)(struct sway_seat *seat, uint32_t time_msec, struct wlr_input_device *device, uint32_t button, enum wlr_button_state state); - void (*motion)(struct sway_seat *seat, uint32_t time_msec); - void (*finish)(struct sway_seat *seat, uint32_t time_msec); - void (*abort)(struct sway_seat *seat); + void (*motion)(struct sway_seat *seat, uint32_t time_msec, + double dx, double dy); + void (*axis)(struct sway_seat *seat, struct wlr_event_pointer_axis *event); + void (*rebase)(struct sway_seat *seat, uint32_t time_msec); + void (*end)(struct sway_seat *seat); void (*unref)(struct sway_seat *seat, struct sway_container *con); void (*render)(struct sway_seat *seat, struct sway_output *output, pixman_region32_t *damage); + bool allow_set_cursor; }; struct sway_seat_device { @@ -71,9 +74,7 @@ struct sway_seat { // Seat operations (drag and resize) const struct sway_seatop_impl *seatop_impl; void *seatop_data; - uint32_t seatop_button; - uint32_t last_button; uint32_t last_button_serial; struct wl_listener focus_destroy; @@ -188,23 +189,25 @@ bool seat_is_input_allowed(struct sway_seat *seat, struct wlr_surface *surface); void drag_icon_update_position(struct sway_drag_icon *icon); +void seatop_begin_default(struct sway_seat *seat); + void seatop_begin_down(struct sway_seat *seat, struct sway_container *con, - uint32_t time_msec, uint32_t button, int sx, int sy); + uint32_t time_msec, int sx, int sy); void seatop_begin_move_floating(struct sway_seat *seat, - struct sway_container *con, uint32_t button); + struct sway_container *con); void seatop_begin_move_tiling_threshold(struct sway_seat *seat, - struct sway_container *con, uint32_t button); + struct sway_container *con); void seatop_begin_move_tiling(struct sway_seat *seat, - struct sway_container *con, uint32_t button); + struct sway_container *con); void seatop_begin_resize_floating(struct sway_seat *seat, - struct sway_container *con, uint32_t button, enum wlr_edges edge); + struct sway_container *con, enum wlr_edges edge); void seatop_begin_resize_tiling(struct sway_seat *seat, - struct sway_container *con, uint32_t button, enum wlr_edges edge); + struct sway_container *con, enum wlr_edges edge); struct sway_container *seat_get_focus_inactive_floating(struct sway_seat *seat, struct sway_workspace *workspace); @@ -214,23 +217,24 @@ void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec, void seat_consider_warp_to_focus(struct sway_seat *seat); -bool seat_doing_seatop(struct sway_seat *seat); - void seatop_button(struct sway_seat *seat, uint32_t time_msec, struct wlr_input_device *device, uint32_t button, enum wlr_button_state state); -void seatop_motion(struct sway_seat *seat, uint32_t time_msec); - /** - * End a seatop and apply the affects. + * dx and dy are distances relative to previous position. */ -void seatop_finish(struct sway_seat *seat, uint32_t time_msec); +void seatop_motion(struct sway_seat *seat, uint32_t time_msec, + double dx, double dy); + +void seatop_axis(struct sway_seat *seat, struct wlr_event_pointer_axis *event); + +void seatop_rebase(struct sway_seat *seat, uint32_t time_msec); /** - * End a seatop without applying the affects. + * End a seatop (ie. free any seatop specific resources). */ -void seatop_abort(struct sway_seat *seat); +void seatop_end(struct sway_seat *seat); /** * Instructs the seatop implementation to drop any references to the given @@ -246,4 +250,6 @@ void seatop_unref(struct sway_seat *seat, struct sway_container *con); void seatop_render(struct sway_seat *seat, struct sway_output *output, pixman_region32_t *damage); +bool seatop_allows_set_cursor(struct sway_seat *seat); + #endif |