Skip to content

Commit

Permalink
workspace_get_initial_output: handle focused layer
Browse files Browse the repository at this point in the history
When a layer surface is focused, `seat_get_focused_workspace` will be
NULL. This changes `workspace_get_initial_output` to use output of the
focus inactive. If the focus inactive is also NULL, then either the
first output or the noop output will be used as fallbacks.
  • Loading branch information
RedSoxFan authored and ddevault committed Feb 11, 2019
1 parent 40023d4 commit e4e579e
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions sway/tree/workspace.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,16 @@ struct sway_output *workspace_get_initial_output(const char *name) {
}
}
}
// Otherwise put it on the focused output
// Otherwise try to put it on the focused output
struct sway_seat *seat = input_manager_current_seat();
struct sway_workspace *focus = seat_get_focused_workspace(seat);
return focus->output;
struct sway_node *focus = seat_get_focus_inactive(seat, &root->node);
if (focus && focus->type == N_WORKSPACE) {
return focus->sway_workspace->output;
} else if (focus && focus->type == N_CONTAINER) {
return focus->sway_container->workspace->output;
}
// Fallback to the first output or noop output for headless
return root->outputs->length ? root->outputs->items[0] : root->noop_output;
}

static void prevent_invalid_outer_gaps(struct sway_workspace *ws) {
Expand Down

0 comments on commit e4e579e

Please sign in to comment.