Allow containers to float

Things worth noting:

* When a fullscreen view unmaps, the check to unset fullscreen on the
workspace has been moved out of view_unmap and into container_destroy,
because containers can be fullscreen too
* The calls to `container_reap_empty_recursive(workspace)` have been
removed from `container_set_floating`. That function reaps upwards so it
wouldn't do anything. I'm probably the one who originally added it...
* My fix (b14bd1b0b1) for the tabbed child
crash has a side effect where when you close a floating container, focus
is not given to the tiled container again. I've removed my fix and
removed the call to `send_cursor_motion` from `seat_set_focus_warp`. We
should consider calling it from somewhere earlier in the call stack.
This commit is contained in:
Ryan Dwyer 2018-07-26 18:36:46 +10:00
parent a2164c6661
commit 08cfba2192
11 changed files with 126 additions and 86 deletions

View file

@ -297,6 +297,11 @@ void container_notify_subtree_changed(struct sway_container *container);
*/
size_t container_titlebar_height(void);
/**
* Resize and center the container in its workspace.
*/
void container_init_floating(struct sway_container *container);
void container_set_floating(struct sway_container *container, bool enable);
void container_set_geometry_from_floating_view(struct sway_container *con);
@ -340,6 +345,12 @@ void container_end_mouse_operation(struct sway_container *container);
void container_set_fullscreen(struct sway_container *container, bool enable);
/**
* Return true if the container is floating, or a child of a floating split
* container.
*/
bool container_is_floating_or_child(struct sway_container *container);
/**
* Return true if the container is fullscreen, or a child of a fullscreen split
* container.

View file

@ -234,11 +234,6 @@ void view_get_constraints(struct sway_view *view, double *min_width,
uint32_t view_configure(struct sway_view *view, double lx, double ly, int width,
int height);
/**
* Center the view in its workspace and build the swayc decorations around it.
*/
void view_init_floating(struct sway_view *view);
/**
* Configure the view's position and size based on the swayc's position and
* size, taking borders into consideration.