summaryrefslogtreecommitdiff
path: root/client.h
diff options
context:
space:
mode:
Diffstat (limited to 'client.h')
-rw-r--r--client.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/client.h b/client.h
index d9bb7f3..4112fd6 100644
--- a/client.h
+++ b/client.h
@@ -261,15 +261,17 @@ client_from_wlr_surface(struct wlr_surface *s)
return NULL;
}
-static inline Client *
-client_from_popup(struct wlr_xdg_popup *popup)
+static inline void *
+toplevel_from_popup(struct wlr_xdg_popup *popup)
{
struct wlr_xdg_surface *surface = popup->base;
while (1) {
switch (surface->role) {
case WLR_XDG_SURFACE_ROLE_POPUP:
- if (!wlr_surface_is_xdg_surface(surface->popup->parent))
+ if (wlr_surface_is_layer_surface(surface->popup->parent))
+ return wlr_layer_surface_v1_from_wlr_surface(surface->popup->parent)->data;
+ else if (!wlr_surface_is_xdg_surface(surface->popup->parent))
return NULL;
surface = wlr_xdg_surface_from_wlr_surface(surface->popup->parent);