aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-07-22 19:25:41 +0100
committerLibravatar GitHub <noreply@github.com>2018-07-22 19:25:41 +0100
commitbe60e44b7c08b87400fed0b9ea586c449883ba11 (patch)
tree5005c92ed70e19fcd9a316b9a9fad0d3ba07b6ad /include
parentMerge pull request #2320 from RedSoxFan/reset-outputs-on-reload (diff)
parentSet cursor when beginning resize and move operations (diff)
downloadsway-be60e44b7c08b87400fed0b9ea586c449883ba11.tar.gz
sway-be60e44b7c08b87400fed0b9ea586c449883ba11.tar.zst
sway-be60e44b7c08b87400fed0b9ea586c449883ba11.zip
Merge pull request #2296 from RyanDwyer/floating-modifier
Implement floating_modifier and mouse operations for floating views
Diffstat (limited to 'include')
-rw-r--r--include/sway/commands.h2
-rw-r--r--include/sway/input/cursor.h4
-rw-r--r--include/sway/input/seat.h30
-rw-r--r--include/sway/tree/container.h12
-rw-r--r--include/sway/tree/layout.h9
-rw-r--r--include/sway/tree/view.h5
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;
106sway_cmd cmd_floating; 106sway_cmd cmd_floating;
107sway_cmd cmd_floating_maximum_size; 107sway_cmd cmd_floating_maximum_size;
108sway_cmd cmd_floating_minimum_size; 108sway_cmd cmd_floating_minimum_size;
109sway_cmd cmd_floating_mod; 109sway_cmd cmd_floating_modifier;
110sway_cmd cmd_floating_scroll; 110sway_cmd cmd_floating_scroll;
111sway_cmd cmd_focus; 111sway_cmd cmd_focus;
112sway_cmd cmd_focus_follows_mouse; 112sway_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,
37void dispatch_cursor_button(struct sway_cursor *cursor, uint32_t time_msec, 38void 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
41void 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
8struct sway_seat_device { 9struct 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
135void drag_icon_update_position(struct sway_drag_icon *icon); 154void drag_icon_update_position(struct sway_drag_icon *icon);
136 155
156void seat_begin_move(struct sway_seat *seat, struct sway_container *con,
157 uint32_t button);
158
159void seat_begin_resize(struct sway_seat *seat, struct sway_container *con,
160 uint32_t button, enum wlr_edges edge);
161
162void seat_end_mouse_operation(struct sway_seat *seat);
163
164void 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);
305void container_get_box(struct sway_container *container, struct wlr_box *box); 305void 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 */
310void 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 */
310void container_floating_move_to(struct sway_container *con, 316void container_floating_move_to(struct sway_container *con,
@@ -318,4 +324,10 @@ void container_set_dirty(struct sway_container *container);
318 324
319bool container_has_urgent_child(struct sway_container *container); 325bool 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 */
331void 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
16enum resize_edge { 16enum 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
23struct sway_container; 24struct 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
28struct sway_view_impl { 28struct 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
216const char *view_get_shell(struct sway_view *view); 218const char *view_get_shell(struct sway_view *view);
217 219
220void view_get_constraints(struct sway_view *view, double *min_width,
221 double *max_width, double *min_height, double *max_height);
222
218uint32_t view_configure(struct sway_view *view, double lx, double ly, int width, 223uint32_t view_configure(struct sway_view *view, double lx, double ly, int width,
219 int height); 224 int height);
220 225