cssvalue: Pass property ID to transition function
This is to allow animating arrays properly. I'm not really thrilled about this solution (we leak propertys into the values again...), but it's the best I can come up with - I prefer it to having N different array types...
This commit is contained in:
parent
fd7668bfb5
commit
e3fc081c5d
@ -95,6 +95,7 @@ gtk_css_value_array_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_array_transition (GtkCssValue *start,
|
gtk_css_value_array_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -84,6 +84,7 @@ gtk_css_value_bg_size_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_bg_size_transition (GtkCssValue *start,
|
gtk_css_value_bg_size_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GtkCssValue *x, *y;
|
GtkCssValue *x, *y;
|
||||||
@ -99,7 +100,7 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
|
|||||||
|
|
||||||
if (start->x)
|
if (start->x)
|
||||||
{
|
{
|
||||||
x = _gtk_css_value_transition (start->x, end->x, progress);
|
x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
|
||||||
if (x == NULL)
|
if (x == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -108,7 +109,7 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
|
|||||||
|
|
||||||
if (start->y)
|
if (start->y)
|
||||||
{
|
{
|
||||||
y = _gtk_css_value_transition (start->y, end->y, progress);
|
y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
|
||||||
if (y == NULL)
|
if (y == NULL)
|
||||||
{
|
{
|
||||||
_gtk_css_value_unref (x);
|
_gtk_css_value_unref (x);
|
||||||
|
@ -95,6 +95,7 @@ gtk_css_value_border_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_border_transition (GtkCssValue *start,
|
gtk_css_value_border_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -69,14 +69,15 @@ gtk_css_value_corner_equal (const GtkCssValue *corner1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_corner_transition (GtkCssValue *start,
|
gtk_css_value_corner_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GtkCssValue *x, *y;
|
GtkCssValue *x, *y;
|
||||||
|
|
||||||
x = _gtk_css_value_transition (start->x, end->x, progress);
|
x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
|
||||||
if (x == NULL)
|
if (x == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
y = _gtk_css_value_transition (start->y, end->y, progress);
|
y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
|
||||||
if (y == NULL)
|
if (y == NULL)
|
||||||
{
|
{
|
||||||
_gtk_css_value_unref (x);
|
_gtk_css_value_unref (x);
|
||||||
|
@ -84,6 +84,7 @@ gtk_css_value_ease_equal (const GtkCssValue *ease1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_ease_transition (GtkCssValue *start,
|
gtk_css_value_ease_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -53,6 +53,7 @@ gtk_css_value_engine_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_engine_transition (GtkCssValue *start,
|
gtk_css_value_engine_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -54,6 +54,7 @@ gtk_css_value_enum_equal (const GtkCssValue *enum1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_enum_transition (GtkCssValue *start,
|
gtk_css_value_enum_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -67,6 +67,7 @@ gtk_css_value_image_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_image_transition (GtkCssValue *start,
|
gtk_css_value_image_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GtkCssImage *fade;
|
GtkCssImage *fade;
|
||||||
|
@ -65,6 +65,7 @@ gtk_css_value_inherit_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_inherit_transition (GtkCssValue *start,
|
gtk_css_value_inherit_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -54,6 +54,7 @@ gtk_css_value_initial_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_initial_transition (GtkCssValue *start,
|
gtk_css_value_initial_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -142,6 +142,7 @@ gtk_css_value_number_equal (const GtkCssValue *number1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_number_transition (GtkCssValue *start,
|
gtk_css_value_number_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
/* FIXME: This needs to be supported at least for percentages,
|
/* FIXME: This needs to be supported at least for percentages,
|
||||||
|
@ -69,14 +69,15 @@ gtk_css_value_position_equal (const GtkCssValue *position1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_position_transition (GtkCssValue *start,
|
gtk_css_value_position_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GtkCssValue *x, *y;
|
GtkCssValue *x, *y;
|
||||||
|
|
||||||
x = _gtk_css_value_transition (start->x, end->x, progress);
|
x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
|
||||||
if (x == NULL)
|
if (x == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
y = _gtk_css_value_transition (start->y, end->y, progress);
|
y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
|
||||||
if (y == NULL)
|
if (y == NULL)
|
||||||
{
|
{
|
||||||
_gtk_css_value_unref (x);
|
_gtk_css_value_unref (x);
|
||||||
|
@ -53,6 +53,7 @@ gtk_css_value_repeat_equal (const GtkCssValue *repeat1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_repeat_transition (GtkCssValue *start,
|
gtk_css_value_repeat_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -53,6 +53,7 @@ gtk_css_value_rgba_equal (const GtkCssValue *rgba1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_rgba_transition (GtkCssValue *start,
|
gtk_css_value_rgba_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GdkRGBA transition;
|
GdkRGBA transition;
|
||||||
|
@ -93,6 +93,7 @@ gtk_css_value_shadows_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_shadows_transition (GtkCssValue *start,
|
gtk_css_value_shadows_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
GtkCssValue *result;
|
GtkCssValue *result;
|
||||||
@ -109,14 +110,14 @@ gtk_css_value_shadows_transition (GtkCssValue *start,
|
|||||||
|
|
||||||
for (i = 0; i < MIN (start->len, end->len); i++)
|
for (i = 0; i < MIN (start->len, end->len); i++)
|
||||||
{
|
{
|
||||||
result->values[i] = _gtk_css_value_transition (start->values[i], end->values[i], progress);
|
result->values[i] = _gtk_css_value_transition (start->values[i], end->values[i], property_id, progress);
|
||||||
}
|
}
|
||||||
if (start->len > end->len)
|
if (start->len > end->len)
|
||||||
{
|
{
|
||||||
for (; i < result->len; i++)
|
for (; i < result->len; i++)
|
||||||
{
|
{
|
||||||
GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (start->values[i]);
|
GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (start->values[i]);
|
||||||
result->values[i] = _gtk_css_value_transition (start->values[i], fill, progress);
|
result->values[i] = _gtk_css_value_transition (start->values[i], fill, property_id, progress);
|
||||||
_gtk_css_value_unref (fill);
|
_gtk_css_value_unref (fill);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -125,7 +126,7 @@ gtk_css_value_shadows_transition (GtkCssValue *start,
|
|||||||
for (; i < result->len; i++)
|
for (; i < result->len; i++)
|
||||||
{
|
{
|
||||||
GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (end->values[i]);
|
GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (end->values[i]);
|
||||||
result->values[i] = _gtk_css_value_transition (fill, end->values[i], progress);
|
result->values[i] = _gtk_css_value_transition (fill, end->values[i], property_id, progress);
|
||||||
_gtk_css_value_unref (fill);
|
_gtk_css_value_unref (fill);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,17 +106,18 @@ gtk_css_value_shadow_equal (const GtkCssValue *shadow1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_shadow_transition (GtkCssValue *start,
|
gtk_css_value_shadow_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
if (start->inset != end->inset)
|
if (start->inset != end->inset)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return gtk_css_shadow_value_new (_gtk_css_value_transition (start->hoffset, end->hoffset, progress),
|
return gtk_css_shadow_value_new (_gtk_css_value_transition (start->hoffset, end->hoffset, property_id, progress),
|
||||||
_gtk_css_value_transition (start->voffset, end->voffset, progress),
|
_gtk_css_value_transition (start->voffset, end->voffset, property_id, progress),
|
||||||
_gtk_css_value_transition (start->radius, end->radius, progress),
|
_gtk_css_value_transition (start->radius, end->radius, property_id, progress),
|
||||||
_gtk_css_value_transition (start->spread, end->spread, progress),
|
_gtk_css_value_transition (start->spread, end->spread, property_id, progress),
|
||||||
start->inset,
|
start->inset,
|
||||||
_gtk_css_value_transition (start->color, end->color, progress));
|
_gtk_css_value_transition (start->color, end->color, property_id, progress));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -51,6 +51,7 @@ gtk_css_value_string_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_string_transition (GtkCssValue *start,
|
gtk_css_value_string_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -46,6 +46,7 @@ gtk_css_transition_set_values (GtkStyleAnimation *animation,
|
|||||||
|
|
||||||
value = _gtk_css_value_transition (transition->start,
|
value = _gtk_css_value_transition (transition->start,
|
||||||
transition->end,
|
transition->end,
|
||||||
|
transition->property,
|
||||||
progress);
|
progress);
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
value = _gtk_css_value_ref (transition->end);
|
value = _gtk_css_value_ref (transition->end);
|
||||||
|
@ -55,6 +55,7 @@ gtk_css_value_typed_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_typed_transition (GtkCssValue *start,
|
gtk_css_value_typed_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -125,6 +125,7 @@ _gtk_css_value_equal0 (const GtkCssValue *value1,
|
|||||||
GtkCssValue *
|
GtkCssValue *
|
||||||
_gtk_css_value_transition (GtkCssValue *start,
|
_gtk_css_value_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (start != NULL, FALSE);
|
g_return_val_if_fail (start != NULL, FALSE);
|
||||||
@ -133,7 +134,7 @@ _gtk_css_value_transition (GtkCssValue *start,
|
|||||||
if (start->class != end->class)
|
if (start->class != end->class)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return start->class->transition (start, end, progress);
|
return start->class->transition (start, end, property_id, progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
@ -50,6 +50,7 @@ struct _GtkCssValueClass {
|
|||||||
const GtkCssValue *value2);
|
const GtkCssValue *value2);
|
||||||
GtkCssValue * (* transition) (GtkCssValue *start,
|
GtkCssValue * (* transition) (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress);
|
double progress);
|
||||||
void (* print) (const GtkCssValue *value,
|
void (* print) (const GtkCssValue *value,
|
||||||
GString *string);
|
GString *string);
|
||||||
@ -74,6 +75,7 @@ gboolean _gtk_css_value_equal0 (const GtkCssValue
|
|||||||
const GtkCssValue *value2);
|
const GtkCssValue *value2);
|
||||||
GtkCssValue *_gtk_css_value_transition (GtkCssValue *start,
|
GtkCssValue *_gtk_css_value_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress);
|
double progress);
|
||||||
|
|
||||||
char * _gtk_css_value_to_string (const GtkCssValue *value);
|
char * _gtk_css_value_to_string (const GtkCssValue *value);
|
||||||
|
@ -238,6 +238,7 @@ gtk_css_value_symbolic_equal (const GtkCssValue *value1,
|
|||||||
static GtkCssValue *
|
static GtkCssValue *
|
||||||
gtk_css_value_symbolic_transition (GtkCssValue *start,
|
gtk_css_value_symbolic_transition (GtkCssValue *start,
|
||||||
GtkCssValue *end,
|
GtkCssValue *end,
|
||||||
|
guint property_id,
|
||||||
double progress)
|
double progress)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user