diff --git a/WINGs/wview_wl.c b/WINGs/wview_wl.c index f98b3d3..5bd87ac 100644 --- a/WINGs/wview_wl.c +++ b/WINGs/wview_wl.c @@ -310,6 +310,14 @@ static void wl_map(void *vctx, W_View *view) W_ViewSceneNodeSetEnabledFn((unsigned long)view->window, 1); if (view->flags.topLevel) { + /* Re-apply popup position/raise on remap so the surface appears + * above parent windows. handle_toplevel_map only fires on the + * initial xdg_surface map event, not on scene-node re-enable. */ + if (view->flags.popup) { + extern void W_WLClientPopupSetPosition(WNativeWindow w, int x, int y); + W_WLClientPopupSetPosition((WNativeWindow)view->window, + view->pos.x, view->pos.y); + } wl_redisplay(vctx, view); return; }