forked from AuroraMiddleware/gtk
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:
parent
b3bbe99001
commit
bdabea3ae3
@ -137,6 +137,9 @@ typedef struct {
|
|||||||
gint64 start_time;
|
gint64 start_time;
|
||||||
gint64 end_time;
|
gint64 end_time;
|
||||||
|
|
||||||
|
gint last_visible_widget_width;
|
||||||
|
gint last_visible_widget_height;
|
||||||
|
|
||||||
GtkStackTransitionType active_transition_type;
|
GtkStackTransitionType active_transition_type;
|
||||||
} GtkStackPrivate;
|
} GtkStackPrivate;
|
||||||
|
|
||||||
@ -1059,9 +1062,20 @@ set_visible_child (GtkStack *stack,
|
|||||||
if (priv->visible_child && priv->visible_child->widget)
|
if (priv->visible_child && priv->visible_child->widget)
|
||||||
{
|
{
|
||||||
if (gtk_widget_is_visible (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
|
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;
|
priv->visible_child = child_info;
|
||||||
|
Loading…
Reference in New Issue
Block a user