aboutsummaryrefslogtreecommitdiff
path: root/include/sway/input
diff options
context:
space:
mode:
Diffstat (limited to 'include/sway/input')
-rw-r--r--include/sway/input/cursor.h9
-rw-r--r--include/sway/input/seat.h44
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