aboutsummaryrefslogtreecommitdiff
path: root/include/sway/tree
diff options
context:
space:
mode:
Diffstat (limited to 'include/sway/tree')
-rw-r--r--include/sway/tree/arrange.h6
-rw-r--r--include/sway/tree/container.h80
-rw-r--r--include/sway/tree/layout.h59
-rw-r--r--include/sway/tree/root.h4
-rw-r--r--include/sway/tree/view.h5
-rw-r--r--include/sway/tree/workspace.h13
6 files changed, 66 insertions, 101 deletions
diff --git a/include/sway/tree/arrange.h b/include/sway/tree/arrange.h
index d6abcc81..346103d3 100644
--- a/include/sway/tree/arrange.h
+++ b/include/sway/tree/arrange.h
@@ -4,12 +4,6 @@
struct sway_container;
-// Remove gaps around container
-void remove_gaps(struct sway_container *c);
-
-// Add gaps around container
-void add_gaps(struct sway_container *c);
-
/**
* Arrange layout for all the children of the given container.
*/
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index 5eccedc1..e4071cfe 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -53,6 +53,9 @@ struct sway_output;
struct sway_workspace;
struct sway_view;
+enum movement_direction;
+enum wlr_direction;
+
struct sway_container_state {
// Container/swayc properties
enum sway_container_layout layout;
@@ -138,6 +141,9 @@ struct sway_container {
struct sway_container *parent;
+ // Outputs currently being intersected
+ list_t *outputs; // struct sway_output
+
// Indicates that the container is a scratchpad container.
// Both hidden and visible scratchpad containers have scratchpad=true.
// Hidden scratchpad containers have a NULL parent.
@@ -166,39 +172,13 @@ struct sway_container {
struct {
struct wl_signal destroy;
- // Raised after the tree updates, but before arrange_windows
- // Passed the previous parent
- struct wl_signal reparent;
} events;
-
- struct wl_listener reparent;
};
struct sway_container *container_create(enum sway_container_type type);
const char *container_type_to_str(enum sway_container_type type);
-struct sway_container *output_create(struct sway_output *sway_output);
-
-/**
- * Create a new container container. A container container can be a a child of
- * a workspace container or another container container.
- */
-struct sway_container *container_container_create();
-
-/**
- * Create a new output. Outputs are children of the root container and have no
- * order in the tree structure.
- */
-struct sway_container *output_create(struct sway_output *sway_output);
-
-/**
- * Create a new workspace container. Workspaces are children of an output
- * container and are ordered alphabetically by name.
- */
-struct sway_container *workspace_create(struct sway_container *output,
- const char *name);
-
/*
* Create a new view container. A view can be a child of a workspace container
* or a container container and are rendered in the order and structure of
@@ -207,9 +187,9 @@ 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);
+void container_destroy(struct sway_container *con);
-struct sway_container *container_destroy(struct sway_container *container);
+void container_begin_destroy(struct sway_container *con);
struct sway_container *container_close(struct sway_container *container);
@@ -257,10 +237,7 @@ void container_update_textures_recursive(struct sway_container *con);
void container_damage_whole(struct sway_container *container);
-bool container_reap_empty(struct sway_container *con);
-
-struct sway_container *container_reap_empty_recursive(
- struct sway_container *con);
+struct sway_container *container_reap_empty(struct sway_container *con);
struct sway_container *container_flatten(struct sway_container *container);
@@ -353,4 +330,43 @@ bool container_is_floating_or_child(struct sway_container *container);
*/
bool container_is_fullscreen_or_child(struct sway_container *container);
+/**
+ * Return the output which will be used for scale purposes.
+ * This is the most recently entered output.
+ */
+struct sway_output *container_get_effective_output(struct sway_container *con);
+
+void container_discover_outputs(struct sway_container *con);
+
+void container_remove_gaps(struct sway_container *container);
+
+void container_add_gaps(struct sway_container *container);
+
+int container_sibling_index(const struct sway_container *child);
+
+void container_handle_fullscreen_reparent(struct sway_container *con,
+ struct sway_container *old_parent);
+
+void container_add_child(struct sway_container *parent,
+ struct sway_container *child);
+
+void container_insert_child(struct sway_container *parent,
+ struct sway_container *child, int i);
+
+struct sway_container *container_add_sibling(struct sway_container *parent,
+ struct sway_container *child);
+
+struct sway_container *container_remove_child(struct sway_container *child);
+
+struct sway_container *container_replace_child(struct sway_container *child,
+ struct sway_container *new_child);
+
+bool sway_dir_to_wlr(enum movement_direction dir, enum wlr_direction *out);
+
+enum sway_container_layout container_get_default_layout(
+ struct sway_container *con);
+
+struct sway_container *container_split(struct sway_container *child,
+ enum sway_container_layout layout);
+
#endif
diff --git a/include/sway/tree/layout.h b/include/sway/tree/layout.h
deleted file mode 100644
index 5b803dfe..00000000
--- a/include/sway/tree/layout.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef _SWAY_LAYOUT_H
-#define _SWAY_LAYOUT_H
-#include <wlr/types/wlr_output_layout.h>
-#include <wlr/render/wlr_texture.h>
-#include "sway/tree/container.h"
-#include "sway/tree/root.h"
-#include "config.h"
-
-enum movement_direction {
- MOVE_LEFT,
- MOVE_RIGHT,
- MOVE_UP,
- MOVE_DOWN,
- MOVE_PARENT,
- MOVE_CHILD,
-};
-
-enum resize_edge {
- RESIZE_EDGE_NONE = 0,
- RESIZE_EDGE_LEFT = 1,
- RESIZE_EDGE_RIGHT = 2,
- RESIZE_EDGE_TOP = 4,
- RESIZE_EDGE_BOTTOM = 8,
-};
-
-struct sway_container;
-
-void container_add_child(struct sway_container *parent,
- struct sway_container *child);
-
-struct sway_container *container_add_sibling(struct sway_container *parent,
- struct sway_container *child);
-
-struct sway_container *container_remove_child(struct sway_container *child);
-
-struct sway_container *container_replace_child(struct sway_container *child,
- struct sway_container *new_child);
-
-void container_move_to(struct sway_container* container,
- struct sway_container* destination);
-
-void container_move(struct sway_container *container,
- enum movement_direction dir, int move_amt);
-
-enum sway_container_layout container_get_default_layout(
- struct sway_container *con);
-
-struct sway_container *container_get_in_direction(struct sway_container
- *container, struct sway_seat *seat, enum movement_direction dir);
-
-struct sway_container *container_split(struct sway_container *child,
- enum sway_container_layout layout);
-
-void container_recursive_resize(struct sway_container *container,
- double amount, enum resize_edge edge);
-
-void container_swap(struct sway_container *con1, struct sway_container *con2);
-
-#endif
diff --git a/include/sway/tree/root.h b/include/sway/tree/root.h
index d1f04a96..ec6516c9 100644
--- a/include/sway/tree/root.h
+++ b/include/sway/tree/root.h
@@ -21,9 +21,11 @@ struct sway_root {
struct wlr_texture *debug_tree;
- struct wl_list outputs; // sway_output::link
+ // Includes disabled outputs
+ struct wl_list all_outputs; // sway_output::link
list_t *scratchpad; // struct sway_container
+ list_t *saved_workspaces; // For when there's no connected outputs
struct {
struct wl_signal new_container;
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h
index 2747e7c4..f73ce571 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -120,7 +120,6 @@ struct sway_view {
} events;
struct wl_listener surface_new_subsurface;
- struct wl_listener container_reparent;
};
struct sway_xdg_shell_v6_view {
@@ -285,10 +284,10 @@ void view_for_each_popup(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_begin_destroy(struct sway_view *view);
+
void view_map(struct sway_view *view, struct wlr_surface *wlr_surface);
void view_unmap(struct sway_view *view);
diff --git a/include/sway/tree/workspace.h b/include/sway/tree/workspace.h
index 35c91017..04325919 100644
--- a/include/sway/tree/workspace.h
+++ b/include/sway/tree/workspace.h
@@ -18,6 +18,15 @@ extern char *prev_workspace_name;
struct sway_container *workspace_get_initial_output(const char *name);
+struct sway_container *workspace_create(struct sway_container *output,
+ const char *name);
+
+void workspace_destroy(struct sway_container *workspace);
+
+void workspace_begin_destroy(struct sway_container *workspace);
+
+void workspace_consider_destroy(struct sway_container *ws);
+
char *workspace_next_name(const char *output_name);
bool workspace_switch(struct sway_container *workspace,
@@ -66,4 +75,8 @@ struct sway_container *workspace_wrap_children(struct sway_container *ws);
void workspace_add_floating(struct sway_container *workspace,
struct sway_container *con);
+void workspace_remove_gaps(struct sway_container *ws);
+
+void workspace_add_gaps(struct sway_container *ws);
+
#endif