aboutsummaryrefslogtreecommitdiffstats
path: root/sway
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 /sway
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.
Diffstat (limited to 'sway')
-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) {