Commit 4a281edc authored by Benjamin Otte's avatar Benjamin Otte

stylecontext: Only create transitions conditionally

While regular animations should always be created, transitions should
not. This patch allows to express this by passing NULL as the values to
transition from.

It also adds a gtk_style_context_should_create_transitions() function
that returns TRUE when transitions should be created.
parent 7712d41b
......@@ -492,7 +492,8 @@ _gtk_css_computed_values_create_animations (GtkCssComputedValues *values,
GtkCssComputedValues *source,
GtkStyleContext *context)
{
gtk_css_computed_values_create_css_transitions (values, timestamp, source);
if (source != NULL)
gtk_css_computed_values_create_css_transitions (values, timestamp, source);
gtk_css_computed_values_create_css_animations (values, timestamp, context);
}
......
......@@ -3077,6 +3077,27 @@ gtk_style_context_needs_full_revalidate (GtkStyleContext *context,
return FALSE;
}
static gboolean
gtk_style_context_should_create_transitions (GtkStyleContext *context)
{
GtkStyleContextPrivate *priv;
gboolean animate;
priv = context->priv;
if (priv->widget == NULL)
return FALSE;
if (!gtk_widget_get_mapped (priv->widget))
return FALSE;
g_object_get (gtk_widget_get_settings (context->priv->widget),
"gtk-enable-animations", &animate,
NULL);
return animate;
}
void
_gtk_style_context_validate (GtkStyleContext *context,
gint64 timestamp,
......@@ -3144,7 +3165,7 @@ _gtk_style_context_validate (GtkStyleContext *context,
_gtk_css_computed_values_create_animations (data->store,
timestamp,
current->store,
gtk_style_context_should_create_transitions (context) ? current->store : NULL,
context);
if (_gtk_css_computed_values_is_static (data->store))
change &= ~GTK_CSS_CHANGE_ANIMATE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment