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

Reply via email to