diff options
| author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-07-19 20:13:56 -0500 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-07-19 20:13:56 -0500 | 
| commit | 90a12c90a0aa0ac16327b0816de4d9dff69b357e (patch) | |
| tree | 475cc52b6ce103f1ab04d9122dc73c65e47df9b7 /client.h | |
| parent | e0822926068e84b0fc391e0306f66ea0ec16cf47 (diff) | |
always set the same monitor and tags for child clients of a client
fixes #272
Diffstat (limited to '')
| -rw-r--r-- | client.h | 52 | 
1 files changed, 33 insertions, 19 deletions
| @@ -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)  { | 
