diff options
Diffstat (limited to 'include/sway/tree/container.h')
-rw-r--r-- | include/sway/tree/container.h | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index b3406bbe..728daa84 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h | |||
@@ -54,6 +54,37 @@ struct sway_output; | |||
54 | struct sway_workspace; | 54 | struct sway_workspace; |
55 | struct sway_view; | 55 | struct sway_view; |
56 | 56 | ||
57 | struct sway_container_state { | ||
58 | // Container/swayc properties | ||
59 | enum sway_container_layout layout; | ||
60 | double swayc_x, swayc_y; | ||
61 | double swayc_width, swayc_height; | ||
62 | |||
63 | bool has_gaps; | ||
64 | double current_gaps; | ||
65 | double gaps_inner; | ||
66 | double gaps_outer; | ||
67 | |||
68 | struct sway_container *parent; | ||
69 | list_t *children; | ||
70 | |||
71 | // View properties | ||
72 | double view_x, view_y; | ||
73 | double view_width, view_height; | ||
74 | bool is_fullscreen; | ||
75 | |||
76 | enum sway_container_border border; | ||
77 | int border_thickness; | ||
78 | bool border_top; | ||
79 | bool border_bottom; | ||
80 | bool border_left; | ||
81 | bool border_right; | ||
82 | |||
83 | // Workspace properties | ||
84 | struct sway_view *ws_fullscreen; | ||
85 | struct sway_container *ws_floating; | ||
86 | }; | ||
87 | |||
57 | struct sway_container { | 88 | struct sway_container { |
58 | union { | 89 | union { |
59 | // TODO: Encapsulate state for other node types as well like C_CONTAINER | 90 | // TODO: Encapsulate state for other node types as well like C_CONTAINER |
@@ -69,6 +100,10 @@ struct sway_container { | |||
69 | */ | 100 | */ |
70 | size_t id; | 101 | size_t id; |
71 | 102 | ||
103 | // The pending state is the main container properties, and the current state is in the below struct. | ||
104 | // This means most places of the code can refer to the main variables (pending state) and it'll just work. | ||
105 | struct sway_container_state current; | ||
106 | |||
72 | char *name; // The view's title (unformatted) | 107 | char *name; // The view's title (unformatted) |
73 | char *formatted_title; // The title displayed in the title bar | 108 | char *formatted_title; // The title displayed in the title bar |
74 | 109 | ||
@@ -97,8 +132,6 @@ struct sway_container { | |||
97 | 132 | ||
98 | struct sway_container *parent; | 133 | struct sway_container *parent; |
99 | 134 | ||
100 | list_t *marks; // list of char* | ||
101 | |||
102 | float alpha; | 135 | float alpha; |
103 | 136 | ||
104 | struct wlr_texture *title_focused; | 137 | struct wlr_texture *title_focused; |
@@ -107,6 +140,10 @@ struct sway_container { | |||
107 | struct wlr_texture *title_urgent; | 140 | struct wlr_texture *title_urgent; |
108 | size_t title_height; | 141 | size_t title_height; |
109 | 142 | ||
143 | list_t *instructions; // struct sway_transaction_instruction * | ||
144 | |||
145 | bool destroying; | ||
146 | |||
110 | struct { | 147 | struct { |
111 | struct wl_signal destroy; | 148 | struct wl_signal destroy; |
112 | // Raised after the tree updates, but before arrange_windows | 149 | // Raised after the tree updates, but before arrange_windows |
@@ -150,6 +187,8 @@ struct sway_container *workspace_create(struct sway_container *output, | |||
150 | struct sway_container *container_view_create( | 187 | struct sway_container *container_view_create( |
151 | struct sway_container *sibling, struct sway_view *sway_view); | 188 | struct sway_container *sibling, struct sway_view *sway_view); |
152 | 189 | ||
190 | void container_free(struct sway_container *cont); | ||
191 | |||
153 | struct sway_container *container_destroy(struct sway_container *container); | 192 | struct sway_container *container_destroy(struct sway_container *container); |
154 | 193 | ||
155 | struct sway_container *container_close(struct sway_container *container); | 194 | struct sway_container *container_close(struct sway_container *container); |
@@ -253,4 +292,9 @@ void container_set_geometry_from_floating_view(struct sway_container *con); | |||
253 | */ | 292 | */ |
254 | bool container_is_floating(struct sway_container *container); | 293 | bool container_is_floating(struct sway_container *container); |
255 | 294 | ||
295 | /** | ||
296 | * Get a container's box in layout coordinates. | ||
297 | */ | ||
298 | void container_get_box(struct sway_container *container, struct wlr_box *box); | ||
299 | |||
256 | #endif | 300 | #endif |