summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-07-18 16:13:28 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-07-22 23:10:19 +1000
commit9fbe13b9be18c732b58033a57a22a299af91a170 (patch)
treea24901c1bb4eff87877c0d9fb96767b662a9d533 /include
parentMerge pull request #2320 from RedSoxFan/reset-outputs-on-reload (diff)
downloadsway-9fbe13b9be18c732b58033a57a22a299af91a170.tar.gz
sway-9fbe13b9be18c732b58033a57a22a299af91a170.tar.zst
sway-9fbe13b9be18c732b58033a57a22a299af91a170.zip
Implement floating_modifier and mouse operations for floating views
This implements the following: * `floating_modifier` configuration directive * Drag a floating window by its title bar * Hold mod + drag a floating window from anywhere * Resize a floating view by dragging the border * Resize a floating view by holding mod and right clicking anywhere on the view * Resize a floating view and keep aspect ratio by holding shift while resizing using either method * Mouse cursor turns into resize when hovering floating border or corner
Diffstat (limited to 'include')
-rw-r--r--include/sway/commands.h2
-rw-r--r--include/sway/input/seat.h16
-rw-r--r--include/sway/tree/container.h12
-rw-r--r--include/sway/tree/layout.h9
4 files changed, 34 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/seat.h b/include/sway/input/seat.h
index eac1626b..be1f3610 100644
--- a/include/sway/input/seat.h
+++ b/include/sway/input/seat.h
@@ -34,6 +34,8 @@ struct sway_drag_icon {
34 struct wl_listener destroy; 34 struct wl_listener destroy;
35}; 35};
36 36
37enum resize_edge;
38
37struct sway_seat { 39struct sway_seat {
38 struct wlr_seat *wlr_seat; 40 struct wlr_seat *wlr_seat;
39 struct sway_cursor *cursor; 41 struct sway_cursor *cursor;
@@ -52,6 +54,20 @@ struct sway_seat {
52 int32_t touch_id; 54 int32_t touch_id;
53 double touch_x, touch_y; 55 double touch_x, touch_y;
54 56
57 // Operations (drag and resize)
58 enum {
59 OP_NONE,
60 OP_DRAG,
61 OP_RESIZE,
62 } operation;
63 struct sway_container *op_container;
64 enum resize_edge 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
55 struct wl_listener focus_destroy; 71 struct wl_listener focus_destroy;
56 struct wl_listener new_container; 72 struct wl_listener new_container;
57 struct wl_listener new_drag_icon; 73 struct wl_listener new_drag_icon;
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;