[PATCH 1/3] clients: Moving and rotating transient surfaces

Derek Foreman derekf at osg.samsung.com
Tue Oct 6 13:20:37 PDT 2015


On 06/10/15 11:48 AM, Ben Hummon wrote:
> Transient surfaces use child/parent surfaces for stacking order. This
> change resloves an issue in which attempting to move or rotate a
> toplevel transient surface can move or rotate its ancestor.
> ---

This fixes an issue I introduced when trying to stop rotations from
spinning pop-up menus.

Thanks!

Reviewed-by: Derek Foreman <derekf at osg.samsung.com>
Tested-by: Derek Foreman <derekf at osg.samsung.com>

> The moving/rotating issue can be seen by creating transient surfaces
> in the weston stacking demo.
> 
>  desktop-shell/shell.c | 13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index 3c6a3da..09ce5e1 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -486,18 +486,15 @@ find_toplevel_surface(struct shell_surface *in_surface)
>  {
>  	struct shell_surface *surface = in_surface;
>  
> -	if (!surface)
> -		return NULL;
> -
> -	while (surface->parent)
> +	while (surface) {
> +		if (surface->type == SHELL_SURFACE_TOPLEVEL)
> +			return surface;
>  		surface = get_shell_surface(surface->parent);
> +	}
>  
>  	/* If no top level surface was found, just use whatever surface was
>  	   originally provided. */
> -	if (!surface || surface->type != SHELL_SURFACE_TOPLEVEL)
> -		surface = in_surface;
> -
> -	return surface;
> +	return in_surface;
>  }
>  
>  static void
> 



More information about the wayland-devel mailing list