diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/sway/commands.h | 2 | ||||
-rw-r--r-- | include/sway/input/cursor.h | 4 | ||||
-rw-r--r-- | include/sway/input/seat.h | 30 | ||||
-rw-r--r-- | include/sway/tree/container.h | 12 | ||||
-rw-r--r-- | include/sway/tree/layout.h | 9 | ||||
-rw-r--r-- | include/sway/tree/view.h | 5 |
6 files changed, 57 insertions, 5 deletions
diff --git a/include/sway/commands.h b/include/sway/commands.h index e71a7228..f53d335a 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h | |||
@@ -106,7 +106,7 @@ sway_cmd cmd_exit; | |||
106 | sway_cmd cmd_floating; | 106 | sway_cmd cmd_floating; |
107 | sway_cmd cmd_floating_maximum_size; | 107 | sway_cmd cmd_floating_maximum_size; |
108 | sway_cmd cmd_floating_minimum_size; | 108 | sway_cmd cmd_floating_minimum_size; |
109 | sway_cmd cmd_floating_mod; | 109 | sway_cmd cmd_floating_modifier; |
110 | sway_cmd cmd_floating_scroll; | 110 | sway_cmd cmd_floating_scroll; |
111 | sway_cmd cmd_focus; | 111 | sway_cmd cmd_focus; |
112 | sway_cmd cmd_focus_follows_mouse; | 112 | sway_cmd cmd_focus_follows_mouse; |
diff --git a/include/sway/input/cursor.h b/include/sway/input/cursor.h index 5dd109ca..b0a3a7c5 100644 --- a/include/sway/input/cursor.h +++ b/include/sway/input/cursor.h | |||
@@ -11,6 +11,7 @@ struct sway_cursor { | |||
11 | } previous; | 11 | } previous; |
12 | struct wlr_xcursor_manager *xcursor_manager; | 12 | struct wlr_xcursor_manager *xcursor_manager; |
13 | 13 | ||
14 | const char *image; | ||
14 | struct wl_client *image_client; | 15 | struct wl_client *image_client; |
15 | 16 | ||
16 | struct wl_listener motion; | 17 | struct wl_listener motion; |
@@ -37,4 +38,7 @@ void cursor_send_pointer_motion(struct sway_cursor *cursor, uint32_t time_msec, | |||
37 | void dispatch_cursor_button(struct sway_cursor *cursor, uint32_t time_msec, | 38 | void dispatch_cursor_button(struct sway_cursor *cursor, uint32_t time_msec, |
38 | uint32_t button, enum wlr_button_state state); | 39 | uint32_t button, enum wlr_button_state state); |
39 | 40 | ||
41 | void cursor_set_image(struct sway_cursor *cursor, const char *image, | ||
42 | struct wl_client *client); | ||
43 | |||
40 | #endif | 44 | #endif |
diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index eac1626b..ab25788f 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <wlr/types/wlr_layer_shell.h> | 4 | #include <wlr/types/wlr_layer_shell.h> |
5 | #include <wlr/types/wlr_seat.h> | 5 | #include <wlr/types/wlr_seat.h> |
6 | #include <wlr/util/edges.h> | ||
6 | #include "sway/input/input-manager.h" | 7 | #include "sway/input/input-manager.h" |
7 | 8 | ||
8 | struct sway_seat_device { | 9 | struct sway_seat_device { |
@@ -52,6 +53,24 @@ struct sway_seat { | |||
52 | int32_t touch_id; | 53 | int32_t touch_id; |
53 | double touch_x, touch_y; | 54 | double touch_x, touch_y; |
54 | 55 | ||
56 | // Operations (drag and resize) | ||
57 | enum { | ||
58 | OP_NONE, | ||
59 | OP_MOVE, | ||
60 | OP_RESIZE, | ||
61 | } operation; | ||
62 | |||
63 | struct sway_container *op_container; | ||
64 | enum wlr_edges op_resize_edge; | ||
65 | uint32_t op_button; | ||
66 | bool op_resize_preserve_ratio; | ||
67 | double op_ref_lx, op_ref_ly; // cursor's x/y at start of op | ||
68 | double op_ref_width, op_ref_height; // container's size at start of op | ||
69 | double op_ref_con_lx, op_ref_con_ly; // container's x/y at start of op | ||
70 | |||
71 | uint32_t last_button; | ||
72 | uint32_t last_button_serial; | ||
73 | |||
55 | struct wl_listener focus_destroy; | 74 | struct wl_listener focus_destroy; |
56 | struct wl_listener new_container; | 75 | struct wl_listener new_container; |
57 | struct wl_listener new_drag_icon; | 76 | struct wl_listener new_drag_icon; |
@@ -134,4 +153,15 @@ bool seat_is_input_allowed(struct sway_seat *seat, struct wlr_surface *surface); | |||
134 | 153 | ||
135 | void drag_icon_update_position(struct sway_drag_icon *icon); | 154 | void drag_icon_update_position(struct sway_drag_icon *icon); |
136 | 155 | ||
156 | void seat_begin_move(struct sway_seat *seat, struct sway_container *con, | ||
157 | uint32_t button); | ||
158 | |||
159 | void seat_begin_resize(struct sway_seat *seat, struct sway_container *con, | ||
160 | uint32_t button, enum wlr_edges edge); | ||
161 | |||
162 | void seat_end_mouse_operation(struct sway_seat *seat); | ||
163 | |||
164 | void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec, | ||
165 | uint32_t button, enum wlr_button_state state); | ||
166 | |||
137 | #endif | 167 | #endif |
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index ca7a3288..59c5b4c7 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h | |||
@@ -305,6 +305,12 @@ bool container_is_floating(struct sway_container *container); | |||
305 | void container_get_box(struct sway_container *container, struct wlr_box *box); | 305 | void container_get_box(struct sway_container *container, struct wlr_box *box); |
306 | 306 | ||
307 | /** | 307 | /** |
308 | * Move a floating container by the specified amount. | ||
309 | */ | ||
310 | void container_floating_translate(struct sway_container *con, | ||
311 | double x_amount, double y_amount); | ||
312 | |||
313 | /** | ||
308 | * Move a floating container to a new layout-local position. | 314 | * Move a floating container to a new layout-local position. |
309 | */ | 315 | */ |
310 | void container_floating_move_to(struct sway_container *con, | 316 | void container_floating_move_to(struct sway_container *con, |
@@ -318,4 +324,10 @@ void container_set_dirty(struct sway_container *container); | |||
318 | 324 | ||
319 | bool container_has_urgent_child(struct sway_container *container); | 325 | bool container_has_urgent_child(struct sway_container *container); |
320 | 326 | ||
327 | /** | ||
328 | * If the container is involved in a drag or resize operation via a mouse, this | ||
329 | * ends the operation. | ||
330 | */ | ||
331 | void container_end_mouse_operation(struct sway_container *container); | ||
332 | |||
321 | #endif | 333 | #endif |
diff --git a/include/sway/tree/layout.h b/include/sway/tree/layout.h index ba265623..5a78fd58 100644 --- a/include/sway/tree/layout.h +++ b/include/sway/tree/layout.h | |||
@@ -14,10 +14,11 @@ enum movement_direction { | |||
14 | }; | 14 | }; |
15 | 15 | ||
16 | enum resize_edge { | 16 | enum resize_edge { |
17 | RESIZE_EDGE_LEFT, | 17 | RESIZE_EDGE_NONE = 0, |
18 | RESIZE_EDGE_RIGHT, | 18 | RESIZE_EDGE_LEFT = 1, |
19 | RESIZE_EDGE_TOP, | 19 | RESIZE_EDGE_RIGHT = 2, |
20 | RESIZE_EDGE_BOTTOM, | 20 | RESIZE_EDGE_TOP = 4, |
21 | RESIZE_EDGE_BOTTOM = 8, | ||
21 | }; | 22 | }; |
22 | 23 | ||
23 | struct sway_container; | 24 | struct sway_container; |
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 068d92c6..1dfb218b 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h | |||
@@ -26,6 +26,8 @@ enum sway_view_prop { | |||
26 | }; | 26 | }; |
27 | 27 | ||
28 | struct sway_view_impl { | 28 | struct sway_view_impl { |
29 | void (*get_constraints)(struct sway_view *view, double *min_width, | ||
30 | double *max_width, double *min_height, double *max_height); | ||
29 | const char *(*get_string_prop)(struct sway_view *view, | 31 | const char *(*get_string_prop)(struct sway_view *view, |
30 | enum sway_view_prop prop); | 32 | enum sway_view_prop prop); |
31 | uint32_t (*get_int_prop)(struct sway_view *view, enum sway_view_prop prop); | 33 | uint32_t (*get_int_prop)(struct sway_view *view, enum sway_view_prop prop); |
@@ -215,6 +217,9 @@ uint32_t view_get_window_type(struct sway_view *view); | |||
215 | 217 | ||
216 | const char *view_get_shell(struct sway_view *view); | 218 | const char *view_get_shell(struct sway_view *view); |
217 | 219 | ||
220 | void view_get_constraints(struct sway_view *view, double *min_width, | ||
221 | double *max_width, double *min_height, double *max_height); | ||
222 | |||
218 | uint32_t view_configure(struct sway_view *view, double lx, double ly, int width, | 223 | uint32_t view_configure(struct sway_view *view, double lx, double ly, int width, |
219 | int height); | 224 | int height); |
220 | 225 | ||