diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-18 16:13:28 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-22 23:10:19 +1000 |
commit | 9fbe13b9be18c732b58033a57a22a299af91a170 (patch) | |
tree | a24901c1bb4eff87877c0d9fb96767b662a9d533 /include/sway/input/seat.h | |
parent | Merge pull request #2320 from RedSoxFan/reset-outputs-on-reload (diff) | |
download | sway-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/sway/input/seat.h')
-rw-r--r-- | include/sway/input/seat.h | 16 |
1 files changed, 16 insertions, 0 deletions
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 | ||
37 | enum resize_edge; | ||
38 | |||
37 | struct sway_seat { | 39 | struct 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; |