diff --git a/types/xdg_shell/wlr_xdg_popup.c b/types/xdg_shell/wlr_xdg_popup.c index e80358782..07d8d4c7d 100644 --- a/types/xdg_shell/wlr_xdg_popup.c +++ b/types/xdg_shell/wlr_xdg_popup.c @@ -420,12 +420,15 @@ void create_xdg_popup(struct wlr_xdg_surface *surface, if (parent) { surface->popup->parent = parent->surface; wl_list_insert(&parent->popups, &surface->popup->link); - wl_signal_emit_mutable(&parent->events.new_popup, surface->popup); } else { wl_list_init(&surface->popup->link); } set_xdg_surface_role_object(surface, surface->popup->resource); + + if (parent) { + wl_signal_emit_mutable(&parent->events.new_popup, surface->popup); + } } void reset_xdg_popup(struct wlr_xdg_popup *popup) {