always set the same monitor and tags for child clients of a client

fixes #272
This commit is contained in:
Leonardo Hernández Hernández 2022-07-19 20:13:56 -05:00
parent e082292606
commit 90a12c90a0
No known key found for this signature in database
GPG key ID: E538897EE11B9624
2 changed files with 42 additions and 21 deletions

View file

@ -26,6 +26,25 @@ client_surface(Client *c)
return c->surface.xdg->surface;
}
static inline Client *
client_from_wlr_surface(struct wlr_surface *s)
{
struct wlr_xdg_surface *surface;
#ifdef XWAYLAND
struct wlr_xwayland_surface *xsurface;
if (s && wlr_surface_is_xwayland_surface(s)
&& (xsurface = wlr_xwayland_surface_from_wlr_surface(s)))
return xsurface->data;
#endif
if (s && wlr_surface_is_xdg_surface(s)
&& (surface = wlr_xdg_surface_from_wlr_surface(s))
&& surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL)
return surface->data;
return NULL;
}
/* The others */
static inline void
client_activate_surface(struct wlr_surface *s, int activated)
@ -117,6 +136,20 @@ client_get_title(Client *c)
return c->surface.xdg->toplevel->title;
}
static inline Client *
client_get_parent(Client *c)
{
Client *p;
#ifdef XWAYLAND
if (client_is_x11(c) && c->surface.xwayland->parent)
return client_from_wlr_surface(c->surface.xwayland->parent->surface);
#endif
if (c->surface.xdg->toplevel->parent)
return client_from_wlr_surface(c->surface.xdg->toplevel->parent->surface);
return NULL;
}
static inline int
client_is_float_type(Client *c)
{
@ -235,25 +268,6 @@ client_restack_surface(Client *c)
return;
}
static inline Client *
client_from_wlr_surface(struct wlr_surface *s)
{
struct wlr_xdg_surface *surface;
#ifdef XWAYLAND
struct wlr_xwayland_surface *xsurface;
if (wlr_surface_is_xwayland_surface(s)
&& (xsurface = wlr_xwayland_surface_from_wlr_surface(s)))
return xsurface->data;
#endif
if (wlr_surface_is_xdg_surface(s)
&& (surface = wlr_xdg_surface_from_wlr_surface(s))
&& surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL)
return surface->data;
return NULL;
}
static inline void *
toplevel_from_popup(struct wlr_xdg_popup *popup)
{