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. 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
