diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-11-22 20:39:27 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-11-22 20:39:50 -0500 |
commit | aeda2e077f6184ecd26dc078c7b5db7f0dc54fd7 (patch) | |
tree | 0e84fc6ce2409ef5c60210efd18cb0981e3f9cf7 /sway/tree/container.c | |
parent | 68036018c8a19f1ec3536e8111899fe280aad38d (diff) |
Add workspace to outputs
Diffstat (limited to 'sway/tree/container.c')
-rw-r--r-- | sway/tree/container.c | 34 |
1 files changed, 30 insertions, 4 deletions
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; +} |