Refactor arrange_windows()

Replaces arrange_windows() with arrange_root(), arrange_output(),
arrange_workspace() and arrange_children_of().

Also makes fullscreen views save and restore their dimensions, which
allows it to preserve any custom resize and is also a requirement for
floating views once they are implemented.
This commit is contained in:
Ryan Dwyer 2018-04-28 11:26:14 +10:00
parent 85ec700206
commit 167c2e1aa9
17 changed files with 328 additions and 283 deletions

View file

@ -0,0 +1,20 @@
#ifndef _SWAY_ARRANGE_H
#define _SWAY_ARRANGE_H
struct sway_container;
void arrange_windows(struct sway_container *container);
// Determine the root container's geometry, then iterate to everything below
void arrange_root(void);
// Determine the output's geometry, then iterate to everything below
void arrange_output(struct sway_container *output);
// Determine the workspace's geometry, then iterate to everything below
void arrange_workspace(struct sway_container *workspace);
// Arrange layout for all the children of the given workspace/container
void arrange_children_of(struct sway_container *parent);
#endif

View file

@ -75,6 +75,7 @@ struct sway_container {
double x, y;
// does not include borders or gaps.
double width, height;
double saved_width, saved_height;
list_t *children;

View file

@ -60,9 +60,6 @@ enum sway_container_layout container_get_default_layout(
void container_sort_workspaces(struct sway_container *output);
void arrange_windows(struct sway_container *container,
double width, double height);
struct sway_container *container_get_in_direction(struct sway_container
*container, struct sway_seat *seat, enum movement_direction dir);

View file

@ -162,6 +162,8 @@ void view_configure(struct sway_view *view, double ox, double oy, int width,
void view_set_activated(struct sway_view *view, bool activated);
void view_set_fullscreen_raw(struct sway_view *view, bool fullscreen);
void view_set_fullscreen(struct sway_view *view, bool fullscreen);
void view_close(struct sway_view *view);