From 1cf271932afe7a31ee6f6ae4881575590479c991 Mon Sep 17 00:00:00 2001 From: Window Maker Date: Sun, 24 May 2026 18:31:37 +0200 Subject: [PATCH] debug: trace wmaker-popup-v1 protocol flow --- WINGs/wclient_wl.c | 9 +++++++++ src/backend/wayland/wl_backend.c | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/WINGs/wclient_wl.c b/WINGs/wclient_wl.c index 70fe17d..04bb811 100644 --- a/WINGs/wclient_wl.c +++ b/WINGs/wclient_wl.c @@ -463,11 +463,16 @@ wl_client_toplevel_realize(struct W_View *view, int width, int height) if (ctx->wmaker_popup_mgr) { top->wmaker_popup = wmaker_popup_manager_v1_get_popup( ctx->wmaker_popup_mgr, top->xdg_toplevel); + wwarning("wclient_wl: wrapped popup toplevel id=0x%lx pos=(%d,%d) wrapper=%p", + (unsigned long)view->window, view->pos.x, view->pos.y, + (void*)top->wmaker_popup); /* Apply any position recorded in view->pos before realize. */ if (top->wmaker_popup && (view->pos.x || view->pos.y)) { wmaker_popup_v1_set_position(top->wmaker_popup, view->pos.x, view->pos.y); } + } else { + wwarning("wclient_wl: popup view but no manager bound"); } } else { xdg_toplevel_set_app_id(top->xdg_toplevel, "WINGs"); @@ -535,6 +540,9 @@ void W_WLClientPopupSetPosition(WNativeWindow window, int x, int y) { WLClientToplevel *top = wlc_top_find(window); + wwarning("wclient_wl: SetPosition id=0x%lx pos=(%d,%d) top=%p wrapper=%p", + (unsigned long)window, x, y, (void*)top, + top ? (void*)top->wmaker_popup : NULL); if (!top || !top->wmaker_popup) return; wmaker_popup_v1_set_position(top->wmaker_popup, x, y); } @@ -1063,6 +1071,7 @@ registry_handle_global(void *data, struct wl_registry *registry, } else if (strcmp(interface, wmaker_popup_manager_v1_interface.name) == 0) { ctx->wmaker_popup_mgr = wl_registry_bind(registry, name, &wmaker_popup_manager_v1_interface, 1); + wwarning("wclient_wl: bound wmaker_popup_manager_v1"); } } diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 5067f59..e5de810 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -1397,6 +1397,7 @@ wmaker_popup_handle_set_position(struct wl_client *client, { (void)client; struct wl_toplevel_view *view = wl_resource_get_user_data(resource); + wwarning("wmaker_popup: set_position view=%p (%d,%d)", (void*)view, x, y); if (!view) return; view->popup_x = (int)x; view->popup_y = (int)y; @@ -1421,10 +1422,12 @@ wmaker_popup_apply(struct wl_toplevel_view *view) { if (!view || !view->popup) return; - /* Update the canonical view position so subsequent compositor logic - * (frame moves, scene-node positioning) sees the new placement. */ int dx = view->popup_x - view->x; int dy = view->popup_y - view->y; + wwarning("wmaker_popup_apply: view=%p (%d,%d)->(%d,%d) frame_id=0x%lx scene_node=%p", + (void*)view, view->x, view->y, view->popup_x, view->popup_y, + (unsigned long)view->frame_id, (void*)view->scene_node); + view->x = view->popup_x; view->y = view->popup_y;