On Mon, Feb 19, 2018 at 12:18:51PM -0700, Scott Moreau wrote:
> Commit 332d1892 introduced a bug because the window was
> shaped only when the frame was created, leaving the input
> region unchanged regardless if the window was resized.
> This patch updates the input region shape on resize,
> fixing the problem.

This fixes the issue I had with Firefox, thanks!

Reviewed-by: Emmanuel Gil Peyrot <linkma...@linkmauve.fr>
Tested-by: Emmanuel Gil Peyrot <linkma...@linkmauve.fr>

> ---
>  xwayland/window-manager.c | 46 +++++++++++++++++++++++++++-------------------
>  1 file changed, 27 insertions(+), 19 deletions(-)
> 
> diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
> index c307e19..5588166 100644
> --- a/xwayland/window-manager.c
> +++ b/xwayland/window-manager.c
> @@ -659,6 +659,30 @@ weston_wm_window_get_input_rect(struct weston_wm_window 
> *window,
>  }
>  
>  static void
> +weston_wm_window_shape(struct weston_wm_window *window)
> +{
> +     struct weston_wm *wm = window->wm;
> +     xcb_rectangle_t rect;
> +     int x, y, width, height;
> +
> +     weston_wm_window_get_input_rect(window, &x, &y, &width, &height);
> +
> +     rect.x = x;
> +     rect.y = y;
> +     rect.width = width;
> +     rect.height = height;
> +
> +     /* The window frame was created with position and size which include
> +      * an offset for margins and shadow. Set the input region to ignore
> +      * shadow. */
> +     xcb_shape_rectangles(wm->conn,
> +                          XCB_SHAPE_SO_SET,
> +                          XCB_SHAPE_SK_INPUT,
> +                          0, window->frame_id,
> +                          0, 0, 1, &rect);
> +}
> +
> +static void
>  weston_wm_window_send_configure_notify(struct weston_wm_window *window)
>  {
>       xcb_configure_notify_event_t configure_notify;
> @@ -789,6 +813,8 @@ weston_wm_handle_configure_notify(struct weston_wm *wm, 
> xcb_generic_event_t *eve
>                       xwayland_api->set_xwayland(window->shsurf,
>                                                  window->x, window->y);
>       }
> +
> +     weston_wm_window_shape(window);
>  }
>  
>  static void
> @@ -983,7 +1009,6 @@ weston_wm_window_create_frame(struct weston_wm_window 
> *window)
>  {
>       struct weston_wm *wm = window->wm;
>       uint32_t values[3];
> -     xcb_rectangle_t rect;
>       int x, y, width, height;
>       int buttons = FRAME_BUTTON_CLOSE;
>  
> @@ -1040,24 +1065,7 @@ weston_wm_window_create_frame(struct weston_wm_window 
> *window)
>                                                            &wm->format_rgba,
>                                                            width, height);
>  
> -     weston_wm_window_get_input_rect(window, &x, &y, &width, &height);
> -     rect.x = x;
> -     rect.y = y;
> -     rect.width = width;
> -     rect.height = height;
> -
> -     /* The window frame was created with position and size which include
> -      * an offset for margins and shadow. Set the input region to ignore
> -      * shadow. */
> -     xcb_shape_rectangles(wm->conn,
> -                          XCB_SHAPE_SO_SET,
> -                          XCB_SHAPE_SK_INPUT,
> -                          0,
> -                          window->frame_id,
> -                          0,
> -                          0,
> -                          1,
> -                          &rect);
> +     weston_wm_window_shape(window);
>  
>       hash_table_insert(wm->window_hash, window->frame_id, window);
>  }
> -- 
> 2.7.4
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel

-- 
Emmanuel Gil Peyrot

Attachment: signature.asc
Description: PGP signature

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to