aboutsummaryrefslogtreecommitdiff
path: root/include/sway/input/seat.h
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-07-18 16:13:28 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-07-22 23:10:19 +1000
commit9fbe13b9be18c732b58033a57a22a299af91a170 (patch)
treea24901c1bb4eff87877c0d9fb96767b662a9d533 /include/sway/input/seat.h
parent27f65b94ae35a7b7342ed331884f765141fad373 (diff)
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.h16
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 {
struct wl_listener destroy;
};
+enum resize_edge;
+
struct sway_seat {
struct wlr_seat *wlr_seat;
struct sway_cursor *cursor;
@@ -52,6 +54,20 @@ struct sway_seat {
int32_t touch_id;
double touch_x, touch_y;
+ // Operations (drag and resize)
+ enum {
+ OP_NONE,
+ OP_DRAG,
+ OP_RESIZE,
+ } operation;
+ struct sway_container *op_container;
+ enum resize_edge op_resize_edge;
+ uint32_t op_button;
+ bool op_resize_preserve_ratio;
+ double op_ref_lx, op_ref_ly; // cursor's x/y at start of op
+ double op_ref_width, op_ref_height; // container's size at start of op
+ double op_ref_con_lx, op_ref_con_ly; // container's x/y at start of op
+
struct wl_listener focus_destroy;
struct wl_listener new_container;
struct wl_listener new_drag_icon;