GtkStack: Save last visible widget size

When interpolating the stack size, we compute the current size by using
the prefered/minimum current size and the last size. We can't use the
last_visible_surface_allocation because that is not available until the
first _draw call and it doesn't include the child's margins.
This commit is contained in:
Timm Bäder 2015-05-24 16:55:34 +02:00
parent b3bbe99001
commit bdabea3ae3

View File

@ -137,6 +137,9 @@ typedef struct {
gint64 start_time;
gint64 end_time;
gint last_visible_widget_width;
gint last_visible_widget_height;
GtkStackTransitionType active_transition_type;
} GtkStackPrivate;
@ -1059,9 +1062,20 @@ set_visible_child (GtkStack *stack,
if (priv->visible_child && priv->visible_child->widget)
{
if (gtk_widget_is_visible (widget))
priv->last_visible_child = priv->visible_child;
{
int fake;
priv->last_visible_child = priv->visible_child;
gtk_widget_get_preferred_width (priv->last_visible_child->widget,
&fake,
&priv->last_visible_widget_width);
gtk_widget_get_preferred_height (priv->last_visible_child->widget,
&fake,
&priv->last_visible_widget_height);
}
else
gtk_widget_set_child_visible (priv->visible_child->widget, FALSE);
{
gtk_widget_set_child_visible (priv->visible_child->widget, FALSE);
}
}
priv->visible_child = child_info;