Store geometry in the view and handle any floating view resizing

This commit is contained in:
Ryan Dwyer 2018-08-18 15:10:06 +10:00
parent 4e755c4b12
commit b0a5f3a25f
11 changed files with 144 additions and 112 deletions

View file

@ -162,20 +162,6 @@ void view_get_constraints(struct sway_view *view, double *min_width,
}
}
void view_get_geometry(struct sway_view *view, struct wlr_box *box) {
if (view->surface == NULL) {
box->x = box->y = box->width = box->height = 0;
return;
}
if (view->impl->get_geometry) {
view->impl->get_geometry(view, box);
return;
}
box->x = box->y = 0;
box->width = view->surface->current.width;
box->height = view->surface->current.height;
}
uint32_t view_configure(struct sway_view *view, double lx, double ly, int width,
int height) {
if (view->impl->configure) {
@ -629,6 +615,18 @@ void view_unmap(struct sway_view *view) {
view->surface = NULL;
}
void view_update_size(struct sway_view *view, int width, int height) {
if (!sway_assert(container_is_floating(view->swayc),
"Expected a floating container")) {
return;
}
view->width = width;
view->height = height;
view->swayc->current.view_width = width;
view->swayc->current.view_height = height;
container_set_geometry_from_floating_view(view->swayc);
}
static void view_subsurface_create(struct sway_view *view,
struct wlr_subsurface *subsurface) {
struct sway_view_child *child = calloc(1, sizeof(struct sway_view_child));