mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
css: Handle some more simple cases of dependencies
This commit is contained in:
parent
012526241a
commit
27fd3fdf81
@ -49,16 +49,18 @@ gtk_css_value_array_compute (GtkCssValue *value,
|
||||
GtkCssValue *result;
|
||||
gboolean changed = FALSE;
|
||||
guint i;
|
||||
GtkCssDependencies child_deps;
|
||||
|
||||
if (value->n_values == 0)
|
||||
return _gtk_css_value_ref (value);
|
||||
|
||||
*dependencies = GTK_CSS_DEPENDS_ON_EVERYTHING;
|
||||
|
||||
result = _gtk_css_array_value_new_from_array (value->values, value->n_values);
|
||||
for (i = 0; i < value->n_values; i++)
|
||||
{
|
||||
result->values[i] = _gtk_css_value_compute (value->values[i], property_id, context, NULL);
|
||||
result->values[i] = _gtk_css_value_compute (value->values[i], property_id, context, &child_deps);
|
||||
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
changed |= (result->values[i] != value->values[i]);
|
||||
}
|
||||
|
||||
|
@ -46,13 +46,25 @@ gtk_css_value_bg_size_compute (GtkCssValue *value,
|
||||
GtkStyleContext *context,
|
||||
GtkCssDependencies *dependencies)
|
||||
{
|
||||
GtkCssValue *x, *y;
|
||||
GtkCssDependencies x_deps, y_deps;
|
||||
|
||||
if (value->x == NULL && value->y == NULL)
|
||||
return _gtk_css_value_ref (value);
|
||||
|
||||
*dependencies = GTK_CSS_DEPENDS_ON_EVERYTHING;
|
||||
x_deps = y_deps = 0;
|
||||
x = y = NULL;
|
||||
|
||||
return _gtk_css_bg_size_value_new (value->x ? _gtk_css_value_compute (value->x, property_id, context, NULL) : NULL,
|
||||
value->y ? _gtk_css_value_compute (value->y, property_id, context, NULL) : NULL);
|
||||
if (value->x)
|
||||
x = _gtk_css_value_compute (value->x, property_id, context, &x_deps);
|
||||
|
||||
if (value->y)
|
||||
y = _gtk_css_value_compute (value->y, property_id, context, &y_deps);
|
||||
|
||||
*dependencies = _gtk_css_dependencies_union (x_deps, y_deps);
|
||||
|
||||
return _gtk_css_bg_size_value_new (value->x ? x : NULL,
|
||||
value->y ? y : NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -54,17 +54,17 @@ gtk_css_value_shadows_compute (GtkCssValue *value,
|
||||
GtkCssDependencies *dependencies)
|
||||
{
|
||||
GtkCssValue *result;
|
||||
GtkCssDependencies child_deps;
|
||||
guint i;
|
||||
|
||||
if (value->len == 0)
|
||||
return _gtk_css_value_ref (value);
|
||||
|
||||
*dependencies = GTK_CSS_DEPENDS_ON_EVERYTHING;
|
||||
|
||||
result = gtk_css_shadows_value_new (value->values, value->len);
|
||||
for (i = 0; i < value->len; i++)
|
||||
{
|
||||
result->values[i] = _gtk_css_value_compute (value->values[i], property_id, context, NULL);
|
||||
result->values[i] = _gtk_css_value_compute (value->values[i], property_id, context, &child_deps);
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -65,14 +65,30 @@ gtk_css_value_shadow_compute (GtkCssValue *shadow,
|
||||
GtkStyleContext *context,
|
||||
GtkCssDependencies *dependencies)
|
||||
{
|
||||
*dependencies = GTK_CSS_DEPENDS_ON_EVERYTHING;
|
||||
GtkCssValue *hoffset, *voffset, *radius, *spread, *color;
|
||||
GtkCssDependencies child_deps;
|
||||
|
||||
return gtk_css_shadow_value_new (_gtk_css_value_compute (shadow->hoffset, property_id, context, NULL),
|
||||
_gtk_css_value_compute (shadow->voffset, property_id, context, NULL),
|
||||
_gtk_css_value_compute (shadow->radius, property_id, context, NULL),
|
||||
_gtk_css_value_compute (shadow->spread, property_id, context, NULL),
|
||||
shadow->inset,
|
||||
_gtk_css_value_compute (shadow->color, property_id, context, NULL));
|
||||
child_deps = 0;
|
||||
hoffset = _gtk_css_value_compute (shadow->hoffset, property_id, context, &child_deps);
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
child_deps = 0;
|
||||
voffset = _gtk_css_value_compute (shadow->voffset, property_id, context, &child_deps);
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
child_deps = 0;
|
||||
radius = _gtk_css_value_compute (shadow->radius, property_id, context, &child_deps);
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
child_deps = 0;
|
||||
spread = _gtk_css_value_compute (shadow->spread, property_id, context, &child_deps),
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
child_deps = 0;
|
||||
color = _gtk_css_value_compute (shadow->color, property_id, context, &child_deps);
|
||||
*dependencies = _gtk_css_dependencies_union (*dependencies, child_deps);
|
||||
|
||||
return gtk_css_shadow_value_new (hoffset, voffset, radius, spread, shadow->inset, color);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
Loading…
Reference in New Issue
Block a user