mirror of
https://github.com/swaywm/sway.git
synced 2024-11-04 15:33:13 +00:00
view: Save surface x and y on saved buffers
We need to use surface_x and surface_y when rendering and damaging saved buffers as these compensate for views that have been centered due to being smaller than their container. Add them to the surface positions on the saved buffer so we have the values from the time the buffer was saved.
This commit is contained in:
parent
63420a2caa
commit
cf1e3be228
|
@ -289,10 +289,8 @@ static void render_saved_view(struct sway_view *view,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_box box = {
|
struct wlr_box box = {
|
||||||
.x = view->container->surface_x - output->lx -
|
.x = saved_buf->x - view->saved_geometry.x - output->lx,
|
||||||
view->saved_geometry.x + saved_buf->x,
|
.y = saved_buf->y - view->saved_geometry.y - output->ly,
|
||||||
.y = view->container->surface_y - output->ly -
|
|
||||||
view->saved_geometry.y + saved_buf->y,
|
|
||||||
.width = saved_buf->width,
|
.width = saved_buf->width,
|
||||||
.height = saved_buf->height,
|
.height = saved_buf->height,
|
||||||
};
|
};
|
||||||
|
|
|
@ -214,8 +214,8 @@ static void apply_container_state(struct sway_container *container,
|
||||||
struct sway_saved_buffer *saved_buf;
|
struct sway_saved_buffer *saved_buf;
|
||||||
wl_list_for_each(saved_buf, &view->saved_buffers, link) {
|
wl_list_for_each(saved_buf, &view->saved_buffers, link) {
|
||||||
struct wlr_box box = {
|
struct wlr_box box = {
|
||||||
.x = container->current.content_x - view->saved_geometry.x + saved_buf->x,
|
.x = saved_buf->x - view->saved_geometry.x,
|
||||||
.y = container->current.content_y - view->saved_geometry.y + saved_buf->y,
|
.y = saved_buf->y - view->saved_geometry.y,
|
||||||
.width = saved_buf->width,
|
.width = saved_buf->width,
|
||||||
.height = saved_buf->height,
|
.height = saved_buf->height,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1350,8 +1350,8 @@ static void view_save_buffer_iterator(struct wlr_surface *surface,
|
||||||
saved_buffer->buffer = surface->buffer;
|
saved_buffer->buffer = surface->buffer;
|
||||||
saved_buffer->width = surface->current.width;
|
saved_buffer->width = surface->current.width;
|
||||||
saved_buffer->height = surface->current.height;
|
saved_buffer->height = surface->current.height;
|
||||||
saved_buffer->x = sx;
|
saved_buffer->x = view->container->surface_x + sx;
|
||||||
saved_buffer->y = sy;
|
saved_buffer->y = view->container->surface_y + sy;
|
||||||
saved_buffer->transform = surface->current.transform;
|
saved_buffer->transform = surface->current.transform;
|
||||||
wlr_surface_get_buffer_source_box(surface, &saved_buffer->source_box);
|
wlr_surface_get_buffer_source_box(surface, &saved_buffer->source_box);
|
||||||
wl_list_insert(&view->saved_buffers, &saved_buffer->link);
|
wl_list_insert(&view->saved_buffers, &saved_buffer->link);
|
||||||
|
|
Loading…
Reference in a new issue