On 03/09/15 03:26 PM, Bryce Harrington wrote: > On Wed, Sep 02, 2015 at 11:32:05AM -0500, Derek Foreman wrote: >> This prevents the rotation mouse bind from rotating pop-up menus >> directly by using a shell surface's eldest parent instead. >> >> Signed-off-by: Derek Foreman <[email protected]> >> --- >> desktop-shell/shell.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c >> index 034d39b..b080339 100644 >> --- a/desktop-shell/shell.c >> +++ b/desktop-shell/shell.c >> @@ -4993,6 +4993,12 @@ surface_rotate(struct shell_surface *surface, struct >> weston_pointer *pointer) >> float dx, dy; >> float r; >> >> + /* We don't want to rotate pop-ups, so let's always start >> + * rotations with a parent surface. >> + */ >> + while (surface->parent) >> + surface = get_shell_surface(surface->parent); >> + > > get_shell_surface() can return NULL, so best check for that too.
Sure, I didn't because I didn't think it would be possible for the parent not to have a shell surface. I'll add the check. > I'm also curious if this is the right behavior, although I'll admit > fairly broad ignorance of shell.c internals. But if the window is just > a popup, wouldn't we only need to operate on the immediate parent one > level up? Also, couldn't there be surfaces that have parents that > aren't pop-ups? Well, pop-ups nest. I think what we want is to find a top level surface that has no parent. These are the kinds of surfaces that meta-tab cycles through. If no such surface can be found, probably best to just use whatever surface was provided (if we just bail a grab won't happen, and something unexpected could happen instead...) v2 to follow. > Bryce > >> 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 > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
