[PATCH 1/3] clients: Moving and rotating transient surfaces
Ben Hummon
benjamin.hummon at gmail.com
Tue Oct 6 09:48:14 PDT 2015
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.
---
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
--
2.6.0
More information about the wayland-devel
mailing list