aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-06-06 15:29:19 +0100
committerGitHub <noreply@github.com>2018-06-06 15:29:19 +0100
commitb8202f072cebed6215e7e691c4fb5d90712b95f0 (patch)
tree568d2101ee6633bea3fb833d0917656e5ae984c6
parent7366e1ced972f495a87eaff81706a83b5de56cf1 (diff)
parentc6821f3dd39160289213e8e1cd1477f90d411265 (diff)
Merge pull request #1036 from martinetd/subsurface-draworder
wlr_surface: walk up surfaces in reverse order
-rw-r--r--types/wlr_surface.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/types/wlr_surface.c b/types/wlr_surface.c
index 46a39a39..9c3eb86d 100644
--- a/types/wlr_surface.c
+++ b/types/wlr_surface.c
@@ -805,7 +805,7 @@ static void subsurface_handle_place_above(struct wl_client *client,
}
wl_list_remove(&subsurface->parent_pending_link);
- wl_list_insert(sibling->parent_pending_link.prev,
+ wl_list_insert(&sibling->parent_pending_link,
&subsurface->parent_pending_link);
subsurface->reordered = true;
@@ -832,7 +832,7 @@ static void subsurface_handle_place_below(struct wl_client *client,
}
wl_list_remove(&subsurface->parent_pending_link);
- wl_list_insert(&sibling->parent_pending_link,
+ wl_list_insert(sibling->parent_pending_link.prev,
&subsurface->parent_pending_link);
subsurface->reordered = true;
@@ -933,8 +933,8 @@ struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface,
subsurface->parent = parent;
wl_signal_add(&parent->events.destroy, &subsurface->parent_destroy);
subsurface->parent_destroy.notify = subsurface_handle_parent_destroy;
- wl_list_insert(&parent->subsurfaces, &subsurface->parent_link);
- wl_list_insert(&parent->subsurface_pending_list,
+ wl_list_insert(parent->subsurfaces.prev, &subsurface->parent_link);
+ wl_list_insert(parent->subsurface_pending_list.prev,
&subsurface->parent_pending_link);
surface->role_data = subsurface;
@@ -971,7 +971,7 @@ bool wlr_surface_point_accepts_input(struct wlr_surface *surface,
struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface,
double sx, double sy, double *sub_x, double *sub_y) {
struct wlr_subsurface *subsurface;
- wl_list_for_each(subsurface, &surface->subsurfaces, parent_link) {
+ wl_list_for_each_reverse(subsurface, &surface->subsurfaces, parent_link) {
double _sub_x = subsurface->surface->current->subsurface_position.x;
double _sub_y = subsurface->surface->current->subsurface_position.y;
struct wlr_surface *sub = wlr_surface_surface_at(subsurface->surface,