diff options
Diffstat (limited to 'sway/commands/focus.c')
| -rw-r--r-- | sway/commands/focus.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| 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); | 
