mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-29 15:01:23 +00:00
cssdimensionvalue: Implement transition()
Instead of falling back to the generic gtk_css_number_value_transition (which can allocate multiple new css values), just implement this here.
This commit is contained in:
parent
45455f1bdb
commit
c9e972eecb
@ -243,13 +243,34 @@ gtk_css_value_dimension_get_calc_term_order (const GtkCssValue *value)
|
||||
return 1000 + order_per_unit[value->unit];
|
||||
}
|
||||
|
||||
static GtkCssValue *
|
||||
gtk_css_value_dimension_transition (GtkCssValue *start,
|
||||
GtkCssValue *end,
|
||||
guint property_id,
|
||||
double progress)
|
||||
{
|
||||
if (progress == 0)
|
||||
return _gtk_css_value_ref (start);
|
||||
|
||||
if (progress == 1)
|
||||
return _gtk_css_value_ref (end);
|
||||
|
||||
if (start == end)
|
||||
return _gtk_css_value_ref (start);
|
||||
|
||||
if (start->unit != end->unit)
|
||||
return NULL;
|
||||
|
||||
return gtk_css_dimension_value_new (start->value + (end->value - start->value) * progress, start->unit);
|
||||
}
|
||||
|
||||
static const GtkCssNumberValueClass GTK_CSS_VALUE_DIMENSION = {
|
||||
{
|
||||
"GtkCssDimensionValue",
|
||||
gtk_css_value_dimension_free,
|
||||
gtk_css_value_dimension_compute,
|
||||
gtk_css_value_dimension_equal,
|
||||
gtk_css_number_value_transition,
|
||||
gtk_css_value_dimension_transition,
|
||||
NULL,
|
||||
NULL,
|
||||
gtk_css_value_dimension_print
|
||||
|
Loading…
Reference in New Issue
Block a user