wayland/wl-shell: Use input region as window geometry if set
Historically, wl_shell clients used to pretend the input region was equivalent to the window geometry, so for "correctness" lets do that here too. This makes wl_shell clients with drop shadow behave marginally better than before. https://gitlab.gnome.org/GNOME/mutter/merge_requests/907
This commit is contained in:
parent
f7e256e9a1
commit
cb91f44ba4
@ -573,6 +573,7 @@ wl_shell_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
|
|||||||
MetaWaylandSurface *surface =
|
MetaWaylandSurface *surface =
|
||||||
meta_wayland_surface_role_get_surface (surface_role);
|
meta_wayland_surface_role_get_surface (surface_role);
|
||||||
MetaWindow *window = surface->window;
|
MetaWindow *window = surface->window;
|
||||||
|
cairo_region_t *input_region;
|
||||||
MetaRectangle geom = { 0 };
|
MetaRectangle geom = { 0 };
|
||||||
|
|
||||||
surface_role_class =
|
surface_role_class =
|
||||||
@ -601,7 +602,17 @@ wl_shell_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
|
|||||||
if (!pending->newly_attached)
|
if (!pending->newly_attached)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_wayland_shell_surface_calculate_geometry (shell_surface, &geom);
|
input_region = meta_wayland_surface_calculate_input_region (surface);
|
||||||
|
if (!cairo_region_is_empty (input_region))
|
||||||
|
{
|
||||||
|
cairo_region_get_extents (input_region, &geom);
|
||||||
|
cairo_region_destroy (input_region);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_wayland_shell_surface_calculate_geometry (shell_surface, &geom);
|
||||||
|
}
|
||||||
|
|
||||||
meta_window_wayland_finish_move_resize (window,
|
meta_window_wayland_finish_move_resize (window,
|
||||||
NULL,
|
NULL,
|
||||||
geom, pending->dx, pending->dy);
|
geom, pending->dx, pending->dy);
|
||||||
|
Loading…
Reference in New Issue
Block a user