GtkStack: Fix drawing of sliding
We were not drawing the view window, so the old widget was clipped for the sliding transitions.
This commit is contained in:
@ -1449,7 +1449,9 @@ gtk_stack_draw_slide (GtkWidget *widget,
|
|||||||
if (priv->active_transition_type == GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN)
|
if (priv->active_transition_type == GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN)
|
||||||
y += allocation.height;
|
y += allocation.height;
|
||||||
|
|
||||||
if (priv->last_visible_surface)
|
if (priv->last_visible_surface &&
|
||||||
|
gtk_cairo_should_draw_window (cr, priv->view_window))
|
||||||
|
|
||||||
{
|
{
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
cairo_set_source_surface (cr, priv->last_visible_surface, x, y);
|
cairo_set_source_surface (cr, priv->last_visible_surface, x, y);
|
||||||
@ -1457,6 +1459,7 @@ gtk_stack_draw_slide (GtkWidget *widget,
|
|||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gtk_cairo_should_draw_window (cr, priv->bin_window))
|
||||||
gtk_container_propagate_draw (GTK_CONTAINER (stack),
|
gtk_container_propagate_draw (GTK_CONTAINER (stack),
|
||||||
priv->visible_child->widget,
|
priv->visible_child->widget,
|
||||||
cr);
|
cr);
|
||||||
@ -1470,8 +1473,7 @@ gtk_stack_draw (GtkWidget *widget,
|
|||||||
GtkStackPrivate *priv = stack->priv;
|
GtkStackPrivate *priv = stack->priv;
|
||||||
cairo_t *pattern_cr;
|
cairo_t *pattern_cr;
|
||||||
|
|
||||||
if (priv->visible_child &&
|
if (priv->visible_child)
|
||||||
gtk_cairo_should_draw_window (cr, priv->bin_window))
|
|
||||||
{
|
{
|
||||||
if (priv->transition_pos < 1.0)
|
if (priv->transition_pos < 1.0)
|
||||||
{
|
{
|
||||||
@ -1496,6 +1498,7 @@ gtk_stack_draw (GtkWidget *widget,
|
|||||||
switch (priv->active_transition_type)
|
switch (priv->active_transition_type)
|
||||||
{
|
{
|
||||||
case GTK_STACK_TRANSITION_TYPE_CROSSFADE:
|
case GTK_STACK_TRANSITION_TYPE_CROSSFADE:
|
||||||
|
if (gtk_cairo_should_draw_window (cr, priv->bin_window))
|
||||||
gtk_stack_draw_crossfade (widget, cr);
|
gtk_stack_draw_crossfade (widget, cr);
|
||||||
break;
|
break;
|
||||||
case GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT:
|
case GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT:
|
||||||
@ -1509,7 +1512,7 @@ gtk_stack_draw (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else if (gtk_cairo_should_draw_window (cr, priv->bin_window))
|
||||||
gtk_container_propagate_draw (GTK_CONTAINER (stack),
|
gtk_container_propagate_draw (GTK_CONTAINER (stack),
|
||||||
priv->visible_child->widget,
|
priv->visible_child->widget,
|
||||||
cr);
|
cr);
|
||||||
|
|||||||
Reference in New Issue
Block a user