From aeda2e077f6184ecd26dc078c7b5db7f0dc54fd7 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 22 Nov 2017 20:39:27 -0500 Subject: Add workspace to outputs --- sway/tree/container.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'sway/tree/container.c') diff --git a/sway/tree/container.c b/sway/tree/container.c index 54bcf478..ac79356a 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -5,6 +5,8 @@ #include "sway/container.h" #include "sway/layout.h" #include "sway/output.h" +#include "sway/workspace.h" +#include "log.h" static swayc_t *new_swayc(enum swayc_types type) { // next id starts at 1 because 0 is assigned to root_container in layout.c @@ -27,8 +29,8 @@ static swayc_t *new_swayc(enum swayc_types type) { swayc_t *new_output(struct sway_output *sway_output) { struct wlr_box size; - wlr_output_effective_resolution(sway_output->wlr_output, - &size.width, &size.height); + wlr_output_effective_resolution( + sway_output->wlr_output, &size.width, &size.height); const char *name = sway_output->wlr_output->name; swayc_t *output = new_swayc(C_OUTPUT); @@ -39,7 +41,31 @@ swayc_t *new_output(struct sway_output *sway_output) { add_child(&root_container, output); - // TODO: Create workspace - + // Create workspace + char *ws_name = workspace_next_name(output->name); + sway_log(L_DEBUG, "Creating default workspace %s", ws_name); + new_workspace(output, ws_name); + free(ws_name); return output; } + +swayc_t *new_workspace(swayc_t *output, const char *name) { + if (!sway_assert(output, "new_workspace called with null output")) { + return NULL; + } + sway_log(L_DEBUG, "Added workspace %s for output %s", name, output->name); + swayc_t *workspace = new_swayc(C_WORKSPACE); + + workspace->x = output->x; + workspace->y = output->y; + workspace->width = output->width; + workspace->height = output->height; + workspace->name = !name ? NULL : strdup(name); + workspace->prev_layout = L_NONE; + workspace->layout = default_layout(output); + workspace->workspace_layout = default_layout(output); + + add_child(output, workspace); + sort_workspaces(output); + return workspace; +} -- cgit v1.2.3