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
This commit is contained in:
Ryan Dwyer 2018-07-18 16:13:28 +10:00
parent 27f65b94ae
commit 9fbe13b9be
11 changed files with 395 additions and 17 deletions

View file

@ -304,6 +304,12 @@ bool container_is_floating(struct sway_container *container);
*/
void container_get_box(struct sway_container *container, struct wlr_box *box);
/**
* Move a floating container by the specified amount.
*/
void container_floating_translate(struct sway_container *con,
double x_amount, double y_amount);
/**
* Move a floating container to a new layout-local position.
*/
@ -318,4 +324,10 @@ void container_set_dirty(struct sway_container *container);
bool container_has_urgent_child(struct sway_container *container);
/**
* If the container is involved in a drag or resize operation via a mouse, this
* ends the operation.
*/
void container_end_mouse_operation(struct sway_container *container);
#endif