view: position using the output's usable area

This commit is contained in:
Jente Hidskes 2021-12-23 16:55:18 +01:00
parent dc090aa517
commit fc5cc401b7
3 changed files with 12 additions and 12 deletions

View file

@ -115,7 +115,7 @@ handle_output_commit(struct wl_listener *listener, void *data)
if (event->committed & WLR_OUTPUT_STATE_TRANSFORM) { if (event->committed & WLR_OUTPUT_STATE_TRANSFORM) {
struct cg_view *view; struct cg_view *view;
wl_list_for_each (view, &output->server->views, link) { wl_list_for_each (view, &output->server->views, link) {
view_position(view); view_position(view, &output->usable_area);
} }
} }
} }
@ -131,7 +131,7 @@ handle_output_mode(struct wl_listener *listener, void *data)
struct cg_view *view; struct cg_view *view;
wl_list_for_each (view, &output->server->views, link) { wl_list_for_each (view, &output->server->views, link) {
view_position(view); view_position(view, &output->usable_area);
} }
} }
@ -159,7 +159,7 @@ output_destroy(struct cg_output *output)
struct cg_view *view; struct cg_view *view;
wl_list_for_each (view, &server->views, link) { wl_list_for_each (view, &server->views, link) {
view_position(view); view_position(view, &output->usable_area);
} }
} }
} }
@ -245,7 +245,7 @@ handle_new_output(struct wl_listener *listener, void *data)
struct cg_view *view; struct cg_view *view;
wl_list_for_each (view, &output->server->views, link) { wl_list_for_each (view, &output->server->views, link) {
view_position(view); view_position(view, &output->usable_area);
} }
} }

14
view.c
View file

@ -1,7 +1,7 @@
/* /*
* Cage: A Wayland kiosk. * Cage: A Wayland kiosk.
* *
* Copyright (C) 2018-2020 Jente Hidskes * Copyright (C) 2018-2021 Jente Hidskes
* *
* See the LICENSE file accompanying this file. * See the LICENSE file accompanying this file.
*/ */
@ -85,14 +85,13 @@ view_center(struct cg_view *view, struct wlr_box *layout_box)
} }
void void
view_position(struct cg_view *view) view_position(struct cg_view *view, struct wlr_box *geometry)
{ {
struct wlr_box *layout_box = wlr_output_layout_get_box(view->server->output_layout, NULL);
if (view_is_primary(view) || view_extends_output_layout(view, layout_box)) { if (view_is_primary(view) || view_extends_output_layout(view, geometry)) {
view_maximize(view, layout_box); view_maximize(view, geometry);
} else { } else {
view_center(view, layout_box); view_center(view, geometry);
} }
} }
@ -124,7 +123,8 @@ view_map(struct cg_view *view, struct wlr_surface *surface)
if (view->type != CAGE_XWAYLAND_VIEW || xwayland_view_should_manage(view)) if (view->type != CAGE_XWAYLAND_VIEW || xwayland_view_should_manage(view))
#endif #endif
{ {
view_position(view); struct wlr_box usable_area = {0};
view_position(view, &usable_area);
} }
wl_list_insert(&view->server->views, &view->link); wl_list_insert(&view->server->views, &view->link);

2
view.h
View file

@ -48,7 +48,7 @@ char *view_get_title(struct cg_view *view);
bool view_is_primary(struct cg_view *view); bool view_is_primary(struct cg_view *view);
bool view_is_transient_for(struct cg_view *child, struct cg_view *parent); bool view_is_transient_for(struct cg_view *child, struct cg_view *parent);
void view_activate(struct cg_view *view, bool activate); void view_activate(struct cg_view *view, bool activate);
void view_position(struct cg_view *view); void view_position(struct cg_view *view, struct wlr_box *geometry);
void view_unmap(struct cg_view *view); void view_unmap(struct cg_view *view);
void view_map(struct cg_view *view, struct wlr_surface *surface); void view_map(struct cg_view *view, struct wlr_surface *surface);
void view_destroy(struct cg_view *view); void view_destroy(struct cg_view *view);