From fffa912fd6652eca9f4875ed55891e7783cd235a Mon Sep 17 00:00:00 2001 From: ARDiDo <90479315+ARDiDo@users.noreply.github.com> Date: Tue, 19 Oct 2021 18:15:56 -0400 Subject: [PATCH] use closest wlr_output --- src/view.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/view.c b/src/view.c index 5e259c4e..bb5c2b12 100644 --- a/src/view.c +++ b/src/view.c @@ -80,23 +80,16 @@ view_minimize(struct view *view, bool minimized) } static struct wlr_output * -view_available_wlr_output(struct view *view) +view_closest_wlr_output(struct view *view) { - int corners[4] = {view->x, view->x + view->w, view->y, - view->y + view->h}; - int i, j = 2; - struct wlr_output *output; - for (i = 0; i < 4; i++) { - output = wlr_output_layout_output_at(view->server->output_layout, - corners[i % 2], corners[j] ); - - if (output) { - return output; - } else if (i % 2) { - j++; - } - } - return NULL; + double closest_x, closest_y; + struct wlr_output *wlr_output = NULL; + wlr_output_layout_closest_point(view->server->output_layout, wlr_output, + view->x + view->w / 2, view->y + view->h / 2, &closest_x, + &closest_y); + wlr_output = wlr_output_layout_output_at(view->server->output_layout, + closest_x, closest_y); + return wlr_output; } /* view_wlr_output - return the output that a view is mostly on */ @@ -112,7 +105,7 @@ view_output(struct view *view) { struct wlr_output *wlr_output = view_wlr_output(view); if (!wlr_output) { - wlr_output = view_available_wlr_output(view); + wlr_output = view_closest_wlr_output(view); } return output_from_wlr_output(view->server, wlr_output); } -- 2.52.0