diff options
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/container.c | 7 | ||||
-rw-r--r-- | sway/tree/view.c | 24 |
2 files changed, 7 insertions, 24 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index 1ceae175..2a428ca5 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -509,8 +509,8 @@ static void surface_at_view(struct sway_container *swayc, double lx, double ly, return; } struct sway_view *sview = swayc->sway_view; - double view_sx = lx - sview->x; - double view_sy = ly - sview->y; + double view_sx = lx - sview->x + sview->geometry.x; + double view_sy = ly - sview->y + sview->geometry.y; double _sx, _sy; struct wlr_surface *_surface = NULL; @@ -737,10 +737,10 @@ void container_for_each_child(struct sway_container *container, container->type == C_VIEW, "Expected a container or view")) { return; } - f(container, data); if (container->children) { for (int i = 0; i < container->children->length; ++i) { struct sway_container *child = container->children->items[i]; + f(child, data); container_for_each_child(child, f, data); } } @@ -1065,6 +1065,7 @@ void container_set_geometry_from_floating_view(struct sway_container *con) { con->y = view->y - top; con->width = view->width + border_width * 2; con->height = top + view->height + border_width; + container_set_dirty(con); } bool container_is_floating(struct sway_container *container) { diff --git a/sway/tree/view.c b/sway/tree/view.c index 4c8e1774..7a2c1950 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -618,34 +618,16 @@ void view_unmap(struct sway_view *view) { view->surface = NULL; } -void view_update_position(struct sway_view *view, double lx, double ly) { - if (view->x == lx && view->y == ly) { - return; - } - container_damage_whole(view->swayc); - view->x = lx; - view->y = ly; - view->swayc->current.view_x = lx; - view->swayc->current.view_y = ly; - if (container_is_floating(view->swayc)) { - container_set_geometry_from_floating_view(view->swayc); - } - container_damage_whole(view->swayc); -} - void view_update_size(struct sway_view *view, int width, int height) { - if (view->width == width && view->height == height) { + if (!sway_assert(container_is_floating(view->swayc), + "Expected a floating container")) { return; } - container_damage_whole(view->swayc); view->width = width; view->height = height; view->swayc->current.view_width = width; view->swayc->current.view_height = height; - if (container_is_floating(view->swayc)) { - container_set_geometry_from_floating_view(view->swayc); - } - container_damage_whole(view->swayc); + container_set_geometry_from_floating_view(view->swayc); } static void view_subsurface_create(struct sway_view *view, |