aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/container.c7
-rw-r--r--sway/tree/view.c24
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,