aboutsummaryrefslogtreecommitdiff
path: root/include/sway/tree
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-06-23 16:24:11 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-06-23 16:24:11 +1000
commit38398e2d77d57dc06b67ec88a54091c897915602 (patch)
treec80935807865fd96ab7d037070287d4dfaba1863 /include/sway/tree
parent1c89f32533534f6e78c81c95578f40df45bb9016 (diff)
Implement atomic layout updates for tree operations
This implements atomic layout updates for when views map, reparent or unmap.
Diffstat (limited to 'include/sway/tree')
-rw-r--r--include/sway/tree/container.h16
-rw-r--r--include/sway/tree/view.h18
2 files changed, 21 insertions, 13 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index f4e978ea..7e78cbef 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -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);
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h
index fc4c8df9..5a615b43 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -37,7 +37,7 @@ struct sway_view_impl {
void (*for_each_surface)(struct sway_view *view,
wlr_surface_iterator_func_t iterator, void *user_data);
void (*close)(struct sway_view *view);
- void (*destroy)(struct sway_view *view);
+ void (*free)(struct sway_view *view);
};
struct sway_view {
@@ -68,15 +68,10 @@ struct sway_view {
bool border_left;
bool border_right;
+ bool destroying;
+
list_t *executed_criteria; // struct criteria *
list_t *marks; // char *
- list_t *instructions; // struct sway_transaction_instruction *
-
- // If saved_buffer is set, the main surface of the view will render this
- // buffer/texture instead of its own. This is used while waiting for
- // transactions to complete.
- struct wlr_buffer *saved_buffer;
- int saved_surface_width, saved_surface_height;
struct wlr_texture *marks_focused;
struct wlr_texture *marks_focused_inactive;
@@ -244,11 +239,16 @@ void view_for_each_surface(struct sway_view *view,
void view_init(struct sway_view *view, enum sway_view_type type,
const struct sway_view_impl *impl);
+void view_free(struct sway_view *view);
+
void view_destroy(struct sway_view *view);
void view_map(struct sway_view *view, struct wlr_surface *wlr_surface);
-void view_unmap(struct sway_view *view);
+/**
+ * Unmap the view and return the surviving parent (after reaping).
+ */
+struct sway_container *view_unmap(struct sway_view *view);
void view_update_position(struct sway_view *view, double lx, double ly);