destroy popups when we can't get it's parent or they don't have monitor

This commit is contained in:
Leonardo Hernández Hernández 2024-08-14 13:10:58 -06:00
parent bbc00d88a4
commit 6de87121e2
No known key found for this signature in database
GPG key ID: E538897EE11B9624

4
dwl.c
View file

@ -834,8 +834,10 @@ commitpopup(struct wl_listener *listener, void *data)
return; return;
popup->base->surface->data = wlr_scene_xdg_surface_create( popup->base->surface->data = wlr_scene_xdg_surface_create(
popup->parent->data, popup->base); popup->parent->data, popup->base);
if ((l && !l->mon) || (c && !c->mon)) if ((l && !l->mon) || (c && !c->mon)) {
wlr_xdg_popup_destroy(popup);
return; return;
}
box = type == LayerShell ? l->mon->m : c->mon->w; box = type == LayerShell ? l->mon->m : c->mon->w;
box.x -= (type == LayerShell ? l->scene->node.x : c->geom.x); box.x -= (type == LayerShell ? l->scene->node.x : c->geom.x);
box.y -= (type == LayerShell ? l->scene->node.y : c->geom.y); box.y -= (type == LayerShell ? l->scene->node.y : c->geom.y);