From 445e44cfb217946d42db6decda7f21ec0fb5bf23 Mon Sep 17 00:00:00 2001 From: Ben Hummon Date: Tue, 6 Oct 2015 11:48:14 -0500 Subject: [PATCH] clients: Moving and rotating transient surfaces 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. --- 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 3c6a3da7..09ce5e18 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