On Fri, Sep 11, 2015 at 05:57:39PM -0700, Bryce Harrington wrote: > On Fri, Sep 11, 2015 at 02:27:40PM -0500, Derek Foreman wrote: > > This stops us from rotating or moving pop-up menus by instead rotating > > their parents. > > > > This is easiest to see using a multi-seat configuration. > > > > Signed-off-by: Derek Foreman <[email protected]> > > One minor suggestion below, but no biggie.
Thanks, merged to trunk: To ssh://git.freedesktop.org/git/wayland/weston ca510d0..c0c1497 master -> master > Reviewed-by: Bryce Harrington <[email protected]> > > > --- > > desktop-shell/shell.c | 21 +++++++++++++++++++++ > > 1 file changed, 21 insertions(+) > > > > diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c > > index 034d39b..90a3ded 100644 > > --- a/desktop-shell/shell.c > > +++ b/desktop-shell/shell.c > > @@ -481,6 +481,23 @@ get_output_work_area(struct desktop_shell *shell, > > } > > } > > > > +static struct shell_surface * > > +find_toplevel_surface(struct shell_surface *in_surface) > > +{ > > + struct shell_surface *surface = in_surface; > > + > > + if (!surface) > > + return NULL; > > + > > + while (surface->parent) > > + surface = get_shell_surface(surface->parent); > > + > > + if (!surface || surface->type != SHELL_SURFACE_TOPLEVEL) > > + surface = in_surface; > > A comment to explain what we're doing here might be helpful. > Like: > > /* If no top level surface was found, just use whatever surface was > originally provided. */ > > > + > > + return surface; > > +} > > + > > static void > > send_configure_for_surface(struct shell_surface *shsurf) > > { > > @@ -1770,6 +1787,8 @@ surface_move(struct shell_surface *shsurf, struct > > weston_pointer *pointer, > > if (!shsurf) > > return -1; > > > > + shsurf = find_toplevel_surface(shsurf); > > + > > if (shsurf->grabbed || > > shsurf->state.fullscreen || shsurf->state.maximized) > > return 0; > > @@ -4993,6 +5012,8 @@ surface_rotate(struct shell_surface *surface, struct > > weston_pointer *pointer) > > float dx, dy; > > float r; > > > > + surface = find_toplevel_surface(surface); > > + > > rotate = malloc(sizeof *rotate); > > if (!rotate) > > return; > > -- > > 2.5.1 > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
