diff --git a/WINGs/wclient_wl.c b/WINGs/wclient_wl.c index f15cd82..fdede06 100644 --- a/WINGs/wclient_wl.c +++ b/WINGs/wclient_wl.c @@ -573,6 +573,7 @@ wl_client_view_unmap(WNativeWindow id) * commits do not need a new configure event. */ wl_surface_attach(top->surface, NULL, 0, 0); wl_surface_commit(top->surface); + top->configured = 0; top->mapped = 0; if (top->ctx && top->ctx->display) wl_display_flush(top->ctx->display); diff --git a/WINGs/wpopupbutton.c b/WINGs/wpopupbutton.c index 3b409fa..4e4d911 100644 --- a/WINGs/wpopupbutton.c +++ b/WINGs/wpopupbutton.c @@ -450,6 +450,7 @@ static void resizeMenu(PopUpButton * bPtr) static void popUpMenu(PopUpButton * bPtr) { + extern void W_WLClientDispatchPending(void); W_Screen *scr = bPtr->view->screen; WNativeWindow dummyW; int x, y; @@ -492,6 +493,10 @@ static void popUpMenu(PopUpButton * bPtr) * a no-op on Wayland (wl_redisplay returns early when !mapped). */ W_MapView(bPtr->menuView); + /* Process any pending Wayland events (e.g. the configure from a + * NULL-buffer unmap) so the popup is interactable immediately. */ + W_WLClientDispatchPending(); + /* Pre-render the full menu into the backing as a safety net, * independent of expose-timing. makeMenuPixmap draws every item * with relief, text, indicator, and disabled shading. */