meta-window-actor: Fix paint_volume
We cannot intersect the the complete volume with the unobscured bounds because it does not include the shadows. So just intersect it with the windows's shape bounds and union it with the shadow bounds. This also matches what the comment in the code says: "We could compute an full clip region as we do for the window texture, but the shadow is relatively cheap to draw, and a little more complex to clip, so we just catch the case where the shadow is completely obscured and doesn't need to be drawn at all."
This commit is contained in:
parent
a7fa90b750
commit
487602c409
@ -646,6 +646,9 @@ meta_window_actor_get_paint_volume (ClutterActor *actor,
|
|||||||
|
|
||||||
meta_window_actor_get_shape_bounds (self, &bounds);
|
meta_window_actor_get_shape_bounds (self, &bounds);
|
||||||
|
|
||||||
|
if (meta_shaped_texture_get_unobscured_bounds (META_SHAPED_TEXTURE (priv->actor), &unobscured_bounds))
|
||||||
|
gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds);
|
||||||
|
|
||||||
if (appears_focused ? priv->focused_shadow : priv->unfocused_shadow)
|
if (appears_focused ? priv->focused_shadow : priv->unfocused_shadow)
|
||||||
{
|
{
|
||||||
cairo_rectangle_int_t shadow_bounds;
|
cairo_rectangle_int_t shadow_bounds;
|
||||||
@ -661,9 +664,6 @@ meta_window_actor_get_paint_volume (ClutterActor *actor,
|
|||||||
gdk_rectangle_union (&bounds, &shadow_bounds, &bounds);
|
gdk_rectangle_union (&bounds, &shadow_bounds, &bounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta_shaped_texture_get_unobscured_bounds (META_SHAPED_TEXTURE (priv->actor), &unobscured_bounds))
|
|
||||||
gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds);
|
|
||||||
|
|
||||||
origin.x = bounds.x;
|
origin.x = bounds.x;
|
||||||
origin.y = bounds.y;
|
origin.y = bounds.y;
|
||||||
origin.z = 0.0f;
|
origin.z = 0.0f;
|
||||||
|
Loading…
Reference in New Issue
Block a user