wlr-layer-shell-v1: destroy xdg popups on unmap

This destroys the xdg popups associated with a layer surface when the
layer surface is unmapped. It does not make sense to keep the popups
open when unmapped.
This commit is contained in:
Brian Ashworth 2019-08-24 00:14:18 -04:00 committed by Drew DeVault
parent e19f48d1e4
commit fa477c77c4
1 changed files with 5 additions and 0 deletions

View File

@ -188,6 +188,11 @@ static void layer_surface_unmap(struct wlr_layer_surface_v1 *surface) {
// TODO: probably need to ungrab before this event // TODO: probably need to ungrab before this event
wlr_signal_emit_safe(&surface->events.unmap, surface); wlr_signal_emit_safe(&surface->events.unmap, surface);
struct wlr_xdg_popup *popup, *popup_tmp;
wl_list_for_each_safe(popup, popup_tmp, &surface->popups, link) {
wlr_xdg_popup_destroy(popup->base);
}
struct wlr_layer_surface_v1_configure *configure, *tmp; struct wlr_layer_surface_v1_configure *configure, *tmp;
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) { wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
layer_surface_configure_destroy(configure); layer_surface_configure_destroy(configure);