diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 78b9591..0e97e46 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -5210,9 +5210,11 @@ handle_pointer_button(struct wl_listener *listener, void *data) /* No toplevel surface — check if a WINGs dialog frame_buf was clicked */ struct wl_frame_buf *hit = frame_buf_hit(wl_state.pointer_x, wl_state.pointer_y); - if (hit && hit->id >= 0x20000000) { + if (hit) { + /* Walk up to the parent frame to find the WWindow */ + WNativeWindow lookup = hit->parent_id ? hit->parent_id : hit->id; WObjDescriptor *desc = - wm_backend->context_find(hit->id, WM_CTX_CLIENT_WIN); + wm_backend->context_find(lookup, WM_CTX_CLIENT_WIN); if (desc && desc->parent_type == WCLASS_WINDOW) { WWindow *wwin = (WWindow *)desc->parent; WScreen *scr = wScreenWithNumber(0);