mirror of
https://github.com/cage-kiosk/cage.git
synced 2026-03-11 05:34:37 -04:00
Port 0.16 scene changes
This commit is contained in:
parent
979ff58a24
commit
32c44ddb5f
5 changed files with 37 additions and 26 deletions
33
seat.c
33
seat.c
|
|
@ -53,20 +53,31 @@ static void drag_icon_update_position(struct cg_drag_icon *drag_icon);
|
|||
static struct cg_view *
|
||||
desktop_view_at(struct cg_server *server, double lx, double ly, struct wlr_surface **surface, double *sx, double *sy)
|
||||
{
|
||||
struct wlr_scene_node *node = wlr_scene_node_at(&server->scene->node, lx, ly, sx, sy);
|
||||
if (node == NULL || node->type != WLR_SCENE_NODE_SURFACE) {
|
||||
struct wlr_scene_node *node = wlr_scene_node_at(&server->scene->tree.node, lx, ly, sx, sy);
|
||||
if (node == NULL || node->type != WLR_SCENE_NODE_BUFFER) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*surface = wlr_scene_surface_from_node(node)->surface;
|
||||
struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_from_node(node);
|
||||
struct wlr_scene_surface *scene_surface = wlr_scene_surface_from_buffer(scene_buffer);
|
||||
if (!scene_surface) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*surface = scene_surface->surface;
|
||||
|
||||
/* Walk up the tree until we find a node with a data pointer. When done,
|
||||
* we've found the node representing the view. */
|
||||
while (node != NULL && node->data == NULL) {
|
||||
node = node->parent;
|
||||
}
|
||||
assert(node != NULL);
|
||||
while (!node->data) {
|
||||
if (!node->parent) {
|
||||
node = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
node = &node->parent->node;
|
||||
}
|
||||
|
||||
assert(node != NULL);
|
||||
return node->data;
|
||||
}
|
||||
|
||||
|
|
@ -609,7 +620,7 @@ drag_icon_update_position(struct cg_drag_icon *drag_icon)
|
|||
break;
|
||||
}
|
||||
|
||||
wlr_scene_node_set_position(drag_icon->scene_node, drag_icon->lx, drag_icon->ly);
|
||||
wlr_scene_node_set_position(&drag_icon->scene_tree->node, drag_icon->lx, drag_icon->ly);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -619,7 +630,7 @@ handle_drag_icon_destroy(struct wl_listener *listener, void *data)
|
|||
|
||||
wl_list_remove(&drag_icon->link);
|
||||
wl_list_remove(&drag_icon->destroy.link);
|
||||
wlr_scene_node_destroy(drag_icon->scene_node);
|
||||
wlr_scene_node_destroy(&drag_icon->scene_tree->node);
|
||||
free(drag_icon);
|
||||
}
|
||||
|
||||
|
|
@ -662,8 +673,8 @@ handle_start_drag(struct wl_listener *listener, void *data)
|
|||
}
|
||||
drag_icon->seat = seat;
|
||||
drag_icon->wlr_drag_icon = wlr_drag_icon;
|
||||
drag_icon->scene_node = wlr_scene_subsurface_tree_create(&seat->server->scene->node, wlr_drag_icon->surface);
|
||||
if (!drag_icon->scene_node) {
|
||||
drag_icon->scene_tree = wlr_scene_subsurface_tree_create(&seat->server->scene->tree, wlr_drag_icon->surface);
|
||||
if (!drag_icon->scene_tree) {
|
||||
free(drag_icon);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue