From: Johan Malm Date: Fri, 9 Jul 2021 20:39:20 +0000 (+0100) Subject: view: add view_center() X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=cb98f8f197337520df6f41be8205a0093f3f930b;p=proto%2Flabwc.git view: add view_center() --- diff --git a/include/labwc.h b/include/labwc.h index 6f55bce7..f12870df 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -290,6 +290,7 @@ void view_move_resize(struct view *view, struct wlr_box geo); void view_move(struct view *view, double x, double y); void view_minimize(struct view *view); void view_unminimize(struct view *view); +void view_center(struct view *view); void view_maximize(struct view *view, bool maximize); void view_for_each_surface(struct view *view, wlr_surface_iterator_func_t iterator, void *user_data); diff --git a/src/view.c b/src/view.c index 2a463232..0f59e979 100644 --- a/src/view.c +++ b/src/view.c @@ -49,6 +49,22 @@ view_output(struct view *view) return output; } +void +view_center(struct view *view) +{ + struct wlr_output *output = view_output(view); + if (!output) { + return; + } + + struct wlr_output_layout *layout = view->server->output_layout; + struct wlr_output_layout_output* ol_output = + wlr_output_layout_get(layout, output); + int center_x = ol_output->x + output->width / 2; + int center_y = ol_output->y + output->height / 2; + view_move(view, center_x - view->w / 2, center_y - view->h / 2); +} + void view_maximize(struct view *view, bool maximize) {