Implement atomic layout updates for tree operations

This implements atomic layout updates for when views map, reparent or
unmap.
This commit is contained in:
Ryan Dwyer 2018-06-23 16:24:11 +10:00
parent 1c89f32533
commit 38398e2d77
18 changed files with 545 additions and 389 deletions

View file

@ -65,8 +65,8 @@ struct sway_container_state {
double gaps_inner;
double gaps_outer;
//struct sway_container *parent;
//list_t *children;
struct sway_container *parent;
list_t *children;
// View properties
double view_x, view_y;
@ -79,6 +79,10 @@ struct sway_container_state {
bool border_bottom;
bool border_left;
bool border_right;
// Workspace properties
struct sway_view *ws_fullscreen;
struct sway_container *ws_floating;
};
struct sway_container {
@ -128,8 +132,6 @@ struct sway_container {
struct sway_container *parent;
list_t *marks; // list of char*
float alpha;
struct wlr_texture *title_focused;
@ -138,6 +140,10 @@ struct sway_container {
struct wlr_texture *title_urgent;
size_t title_height;
list_t *instructions; // struct sway_transaction_instruction *
bool destroying;
struct {
struct wl_signal destroy;
// Raised after the tree updates, but before arrange_windows
@ -181,6 +187,8 @@ struct sway_container *workspace_create(struct sway_container *output,
struct sway_container *container_view_create(
struct sway_container *sibling, struct sway_view *sway_view);
void container_free(struct sway_container *cont);
struct sway_container *container_destroy(struct sway_container *container);
struct sway_container *container_close(struct sway_container *container);