]> git.mdlowis.com Git - proto/labwc.git/commitdiff
improve view_output
authorARDiDo <90479315+ARDiDo@users.noreply.github.com>
Mon, 18 Oct 2021 23:59:11 +0000 (19:59 -0400)
committerJohan Malm <johanmalm@users.noreply.github.com>
Wed, 20 Oct 2021 05:51:30 +0000 (06:51 +0100)
src/view.c

index 4f5832f6a2750bb26b1f9574ca5417ec158ece31..bdcaa8fc8133d686e8d6b73b75c99753e6f2d883 100644 (file)
@@ -79,6 +79,31 @@ view_minimize(struct view *view, bool minimized)
        }
 }
 
+static struct wlr_output *
+view_available_wlr_output(struct view *view)
+{
+       /* checks all of a view's corners */
+       struct wlr_output *output = wlr_output_layout_output_at(
+               view->server->output_layout, view->x, view->y + view->h);
+       if (output) {
+               return output;
+       }
+       output = wlr_output_layout_output_at(view->server->output_layout,
+               view->x + view->w, view->y + view->h);
+       if (output) {
+               return output;
+       }
+       output = wlr_output_layout_output_at(view->server->output_layout,
+               view->x + view->w, view->y);
+       if (output) {
+               return output;
+       }
+       output = wlr_output_layout_output_at(view->server->output_layout,
+               view->x, view->y);
+
+       return output;
+}
+
 /* view_wlr_output - return the output that a view is mostly on */
 struct wlr_output *
 view_wlr_output(struct view *view)
@@ -91,6 +116,9 @@ static struct output *
 view_output(struct view *view)
 {
        struct wlr_output *wlr_output = view_wlr_output(view);
+       if (!wlr_output) {
+               wlr_output = view_available_wlr_output(view);
+       }
        return output_from_wlr_output(view->server, wlr_output);
 }