summaryrefslogtreecommitdiff
path: root/sway/tree/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 561c6ef1..9ccb2a31 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -673,15 +673,22 @@ void view_unmap(struct sway_view *view) {
}
void view_update_size(struct sway_view *view, int width, int height) {
- if (!sway_assert(container_is_floating(view->container),
- "Expected a floating container")) {
- return;
+ struct sway_container *con = view->container;
+
+ if (container_is_floating(con)) {
+ con->content_width = width;
+ con->content_height = height;
+ con->current.content_width = width;
+ con->current.content_height = height;
+ container_set_geometry_from_content(con);
+ } else {
+ con->surface_x = con->content_x + (con->content_width - width) / 2;
+ con->surface_y = con->content_y + (con->content_height - height) / 2;
+ con->surface_x = fmax(con->surface_x, con->content_x);
+ con->surface_y = fmax(con->surface_y, con->content_y);
}
- view->container->content_width = width;
- view->container->content_height = height;
- view->container->current.content_width = width;
- view->container->current.content_height = height;
- container_set_geometry_from_content(view->container);
+ con->surface_width = width;
+ con->surface_width = height;
}
static const struct sway_view_child_impl subsurface_impl;