void output_damage_surface(struct output *output, struct wlr_surface *surface,
double lx, double ly, bool whole);
void scale_box(struct wlr_box *box, float scale);
-
void output_manager_init(struct server *server);
struct output *output_from_wlr_output(struct server *server, struct wlr_output *wlr_output);
+struct wlr_box *output_box_from_cursor_coords(struct server *server);
void damage_all_outputs(struct server *server);
void damage_view_whole(struct view *view);
}
return NULL;
}
+
+struct wlr_box *
+output_box_from_cursor_coords(struct server *server)
+{
+ struct wlr_output *wlr_output;
+ wlr_output = wlr_output_layout_output_at(server->output_layout,
+ server->seat.cursor->x, server->seat.cursor->y);
+ return wlr_output_layout_get_box(server->output_layout, wlr_output);
+}
position_xdg_toplevel_view(struct view *view)
{
if (istopmost(view)) {
+ struct wlr_box *box = output_box_from_cursor_coords(view->server);
+ view->x = box->x;
+ view->y = box->y;
view->w = view->xdg_surface->geometry.width;
view->h = view->xdg_surface->geometry.height;
view_center(view);
if (!view->been_mapped) {
view_maximize(view, false);
+ struct wlr_box *box = output_box_from_cursor_coords(view->server);
+ view->x = box->x;
+ view->y = box->y;
view_center(view);
view->been_mapped = true;
}