aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-02-10 20:12:51 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2019-02-11 10:22:53 -0500
commite4e579ea3687342d06915be0df0093987e0e0314 (patch)
tree3500b7c5b1fe18b8dd9d5064362444bcc3f9ce6e
parentAbort early when XDG_RUNTIME_DIR is not set (diff)
downloadsway-e4e579ea3687342d06915be0df0093987e0e0314.tar.gz
sway-e4e579ea3687342d06915be0df0093987e0e0314.tar.zst
sway-e4e579ea3687342d06915be0df0093987e0e0314.zip
workspace_get_initial_output: handle focused layer1.0-rc2
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.
-rw-r--r--sway/tree/workspace.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 8b3eb2ad..b9780922 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -42,10 +42,16 @@ struct sway_output *workspace_get_initial_output(const char *name) {
42 } 42 }
43 } 43 }
44 } 44 }
45 // Otherwise put it on the focused output 45 // Otherwise try to put it on the focused output
46 struct sway_seat *seat = input_manager_current_seat(); 46 struct sway_seat *seat = input_manager_current_seat();
47 struct sway_workspace *focus = seat_get_focused_workspace(seat); 47 struct sway_node *focus = seat_get_focus_inactive(seat, &root->node);
48 return focus->output; 48 if (focus && focus->type == N_WORKSPACE) {
49 return focus->sway_workspace->output;
50 } else if (focus && focus->type == N_CONTAINER) {
51 return focus->sway_container->workspace->output;
52 }
53 // Fallback to the first output or noop output for headless
54 return root->outputs->length ? root->outputs->items[0] : root->noop_output;
49} 55}
50 56
51static void prevent_invalid_outer_gaps(struct sway_workspace *ws) { 57static void prevent_invalid_outer_gaps(struct sway_workspace *ws) {