aboutsummaryrefslogtreecommitdiff
path: root/include/sway/tree
diff options
context:
space:
mode:
Diffstat (limited to 'include/sway/tree')
-rw-r--r--include/sway/tree/arrange.h14
-rw-r--r--include/sway/tree/container.h64
-rw-r--r--include/sway/tree/layout.h53
-rw-r--r--include/sway/tree/root.h4
-rw-r--r--include/sway/tree/view.h4
-rw-r--r--include/sway/tree/workspace.h13
6 files changed, 61 insertions, 91 deletions
diff --git a/include/sway/tree/arrange.h b/include/sway/tree/arrange.h
index d6abcc81..f47e8db5 100644
--- a/include/sway/tree/arrange.h
+++ b/include/sway/tree/arrange.h
@@ -1,18 +1,16 @@
#ifndef _SWAY_ARRANGE_H
#define _SWAY_ARRANGE_H
-#include "sway/desktop/transaction.h"
struct sway_container;
-// Remove gaps around container
-void remove_gaps(struct sway_container *c);
+void arrange_container(struct sway_container *container);
-// Add gaps around container
-void add_gaps(struct sway_container *c);
+void arrange_workspace(struct sway_container *workspace);
+
+void arrange_output(struct sway_container *output);
+
+void arrange_root(void);
-/**
- * Arrange layout for all the children of the given container.
- */
void arrange_windows(struct sway_container *container);
#endif
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index cd886cd0..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;
@@ -176,27 +179,6 @@ 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
@@ -205,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);
@@ -255,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);
@@ -359,4 +338,35 @@ 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 519189d9..00000000
--- a/include/sway/tree/layout.h
+++ /dev/null
@@ -1,53 +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 wlr_edges;
-
-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 wlr_edges 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 5fdecc2b..f73ce571 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -284,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