X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcsscomputedvalues.c;h=dea23bdf5e3ef50da9a0e2b4c63945bd034e415c;hb=5e2c23214564f7dcc687fa8467020eeb6b9407a9;hp=94115a587060224b52c1fe7b23608e3358d88616;hpb=b454fc50edc2ea42931a84af2712d5f075b51e75;p=~andy%2Fgtk diff --git a/gtk/gtkcsscomputedvalues.c b/gtk/gtkcsscomputedvalues.c index 94115a587..dea23bdf5 100644 --- a/gtk/gtkcsscomputedvalues.c +++ b/gtk/gtkcsscomputedvalues.c @@ -19,6 +19,7 @@ #include "config.h" +#include "gtkprivate.h" #include "gtkcsscomputedvaluesprivate.h" #include "gtkcssanimationprivate.h" @@ -120,9 +121,9 @@ _gtk_css_computed_values_compute_value (GtkCssComputedValues *values, GtkCssDependencies dependencies; GtkCssValue *value; - g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); - g_return_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider)); - g_return_if_fail (parent_values == NULL || GTK_IS_CSS_COMPUTED_VALUES (parent_values)); + gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); + gtk_internal_return_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider)); + gtk_internal_return_if_fail (parent_values == NULL || GTK_IS_CSS_COMPUTED_VALUES (parent_values)); /* http://www.w3.org/TR/css3-cascade/#cascade * Then, for every element, the value for each property can be found @@ -154,8 +155,8 @@ _gtk_css_computed_values_set_animated_value (GtkCssComputedValues *values, guint id, GtkCssValue *value) { - g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); - g_return_if_fail (value != NULL); + gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); + gtk_internal_return_if_fail (value != NULL); if (values->animated_values == NULL) values->animated_values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref); @@ -175,10 +176,11 @@ _gtk_css_computed_values_set_value (GtkCssComputedValues *values, GtkCssDependencies dependencies, GtkCssSection *section) { - g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); + gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); if (values->values == NULL) - values->values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref); + values->values = g_ptr_array_new_full (_gtk_css_style_property_get_n_properties (), + (GDestroyNotify)_gtk_css_value_unref); if (id >= values->values->len) g_ptr_array_set_size (values->values, id + 1); @@ -216,7 +218,7 @@ GtkCssValue * _gtk_css_computed_values_get_value (GtkCssComputedValues *values, guint id) { - g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); if (values->animated_values && id < values->animated_values->len && @@ -230,7 +232,7 @@ GtkCssValue * _gtk_css_computed_values_get_intrinsic_value (GtkCssComputedValues *values, guint id) { - g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); if (values->values == NULL || id >= values->values->len) @@ -243,7 +245,7 @@ GtkCssSection * _gtk_css_computed_values_get_section (GtkCssComputedValues *values, guint id) { - g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); if (values->sections == NULL || id >= values->sections->len) @@ -499,6 +501,7 @@ gtk_css_computed_values_create_css_animations (GtkCssComputedValues *values, _gtk_css_play_state_value_get (_gtk_css_array_value_get_nth (play_states, i)), _gtk_css_fill_mode_value_get (_gtk_css_array_value_get_nth (fill_modes, i)), _gtk_css_number_value_get (_gtk_css_array_value_get_nth (iteration_counts, i), 100)); + _gtk_css_keyframes_unref (keyframes); } values->animations = g_slist_prepend (values->animations, animation); } @@ -527,8 +530,8 @@ _gtk_css_computed_values_advance (GtkCssComputedValues *values, GSList *list; guint i; - g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); - g_return_val_if_fail (timestamp >= values->current_time, NULL); + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL); + gtk_internal_return_val_if_fail (timestamp >= values->current_time, NULL); values->current_time = timestamp; old_computed_values = values->animated_values; @@ -577,7 +580,7 @@ _gtk_css_computed_values_is_static (GtkCssComputedValues *values) { GSList *list; - g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), TRUE); + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), TRUE); for (list = values->animations; list; list = list->next) { @@ -591,7 +594,7 @@ _gtk_css_computed_values_is_static (GtkCssComputedValues *values) void _gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values) { - g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); + gtk_internal_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); if (values->animated_values) { @@ -603,3 +606,21 @@ _gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values) values->animations = NULL; } +GtkBitmask * +_gtk_css_computed_values_compute_dependencies (GtkCssComputedValues *values, + const GtkBitmask *parent_changes) +{ + GtkBitmask *changes; + + gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), _gtk_bitmask_new ()); + + changes = _gtk_bitmask_copy (parent_changes); + changes = _gtk_bitmask_intersect (changes, values->depends_on_parent); + if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR)) + changes = _gtk_bitmask_union (changes, values->depends_on_color); + if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE)) + changes = _gtk_bitmask_union (changes, values->depends_on_font_size); + + return changes; +} +