[PATCH weston] libweston-desktop: fix the size of unmaximized xdg surfaces

Giulio Camuffo giuliocamuffo at gmail.com
Fri Jul 28 08:13:39 UTC 2017


2017-07-27 15:22 GMT+02:00 Quentin Glidic <sardemff7+wayland at sardemff7.net>:
> On 7/27/17 3:01 PM, Giulio Camuffo wrote:
>>
>> When unmaximizing a surface the configure event should send 0,0 as the
>> requested size, so that the client can use the size that it had before
>> maximizing
>
>
> Hi,
>
> I disagree on this patch for a few reasons:
> - the size can be ignored in this case, so there is no harm in keeping it
> non-0

I don't really agree, if the compositor requests a size the client
should try to respect it if it can, and in this case they can.

> - it’s up to the shell/compositor to decide, not a protocol library

This is a fair point... the compositor should be able to decide to ask
for some size, but the default should be to let the client go back to
the size it wants to, imho.

> - I am working on a not-so-tiny rewrite of the state code, based on the
> size_requested patch, that will make it clear that the shell/compositor is
> in charge here

Fair enough.


Cheers,
Giulio

>
> What do you think?
>
> Cheers,
>
>
>
>> ---
>>   libweston-desktop/xdg-shell-v6.c | 31 ++++++++++++++++++-------------
>>   1 file changed, 18 insertions(+), 13 deletions(-)
>>
>> diff --git a/libweston-desktop/xdg-shell-v6.c
>> b/libweston-desktop/xdg-shell-v6.c
>> index 1344dda0..3a02815f 100644
>> --- a/libweston-desktop/xdg-shell-v6.c
>> +++ b/libweston-desktop/xdg-shell-v6.c
>> @@ -578,11 +578,29 @@ weston_desktop_xdg_toplevel_send_configure(struct
>> weston_desktop_xdg_toplevel *t
>>   };
>>     static void
>> +weston_desktop_xdg_toplevel_set_size(struct weston_desktop_surface
>> *dsurface,
>> +                                    void *user_data,
>> +                                    int32_t width, int32_t height)
>> +{
>> +       struct weston_desktop_xdg_toplevel *toplevel = user_data;
>> +
>> +       toplevel->pending.size.width = width;
>> +       toplevel->pending.size.height = height;
>> +
>> +       weston_desktop_xdg_surface_schedule_configure(&toplevel->base,
>> false);
>> +}
>> +
>> +static void
>>   weston_desktop_xdg_toplevel_set_maximized(struct weston_desktop_surface
>> *dsurface,
>>                                           void *user_data, bool maximized)
>>   {
>>         struct weston_desktop_xdg_toplevel *toplevel = user_data;
>>   +     /* if we're unmaximizing set the size to 0 so that when the
>> configure event is sent
>> +          it will tell the client to use the size it wants */
>> +       if (toplevel->pending.state.maximized && !maximized)
>> +               weston_desktop_xdg_toplevel_set_size(dsurface, toplevel,
>> 0, 0);
>> +
>>         toplevel->pending.state.maximized = maximized;
>>         weston_desktop_xdg_surface_schedule_configure(&toplevel->base,
>> false);
>>   }
>> @@ -618,19 +636,6 @@ weston_desktop_xdg_toplevel_set_activated(struct
>> weston_desktop_surface *dsurfac
>>   }
>>     static void
>> -weston_desktop_xdg_toplevel_set_size(struct weston_desktop_surface
>> *dsurface,
>> -                                    void *user_data,
>> -                                    int32_t width, int32_t height)
>> -{
>> -       struct weston_desktop_xdg_toplevel *toplevel = user_data;
>> -
>> -       toplevel->pending.size.width = width;
>> -       toplevel->pending.size.height = height;
>> -
>> -       weston_desktop_xdg_surface_schedule_configure(&toplevel->base,
>> false);
>> -}
>> -
>> -static void
>>   weston_desktop_xdg_toplevel_committed(struct weston_desktop_xdg_toplevel
>> *toplevel,
>>                                       int32_t sx, int32_t sy)
>>   {
>>
>
>
> --
>
> Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list