From bf19f63a79f4d844259800c9415599271438cabd Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 1 Nov 2018 08:29:45 +1000 Subject: Wrap to fartherest output when running focus output Also moves the `opposite_direction` function into `util.c` as it's used in two places now. --- sway/commands/focus.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sway/commands/focus.c') diff --git a/sway/commands/focus.c b/sway/commands/focus.c index 521b2427..cef92144 100644 --- a/sway/commands/focus.c +++ b/sway/commands/focus.c @@ -196,6 +196,17 @@ static struct cmd_results *focus_output(struct sway_seat *seat, } struct sway_workspace *ws = seat_get_focused_workspace(seat); output = output_get_in_direction(ws->output, direction); + + if (!output) { + int center_lx = ws->output->lx + ws->output->width / 2; + int center_ly = ws->output->ly + ws->output->height / 2; + struct wlr_output *target = wlr_output_layout_farthest_output( + root->output_layout, opposite_direction(direction), + ws->output->wlr_output, center_lx, center_ly); + if (target) { + output = output_from_wlr_output(target); + } + } } free(identifier); -- cgit v1.2.3