wayland/xdg-shell: Intersect set geometry with subsurface tree geometry
Currently xdg-shell applies a geometry set with set_window_geometry unconditionally. But the specification requires: > When applied, the effective window geometry will be > the set window geometry clamped to the bounding rectangle of the > combined geometry of the surface of the xdg_surface and the > associated subsurfaces. This is especially important to implement viewporter and transformation.
This commit is contained in:

committed by
Jonas Ådahl

parent
db22c13c4f
commit
c7db234c11
@ -64,6 +64,23 @@ meta_wayland_shell_surface_calculate_geometry (MetaWaylandShellSurface *shell_su
|
||||
*out_geometry = geometry;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_shell_surface_determine_geometry (MetaWaylandShellSurface *shell_surface,
|
||||
MetaRectangle *set_geometry,
|
||||
MetaRectangle *out_geometry)
|
||||
{
|
||||
MetaRectangle bounding_geometry = { 0 };
|
||||
MetaRectangle intersected_geometry = { 0 };
|
||||
|
||||
meta_wayland_shell_surface_calculate_geometry (shell_surface,
|
||||
&bounding_geometry);
|
||||
|
||||
meta_rectangle_intersect (set_geometry, &bounding_geometry,
|
||||
&intersected_geometry);
|
||||
|
||||
*out_geometry = intersected_geometry;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_shell_surface_set_window (MetaWaylandShellSurface *shell_surface,
|
||||
MetaWindow *window)
|
||||
|
Reference in New Issue
Block a user