guint _gtk_css_shorthand_property_get_n_subproperties (GtkCssShorthandProperty *shorthand) { g_return_val_if_fail (GTK_IS_CSS_SHORTHAND_PROPERTY (shorthand), 0); return shorthand->subproperties->len; }
GtkCssStyleProperty * _gtk_css_shorthand_property_get_subproperty (GtkCssShorthandProperty *shorthand, guint property) { g_return_val_if_fail (GTK_IS_CSS_SHORTHAND_PROPERTY (shorthand), NULL); g_return_val_if_fail (property < shorthand->subproperties->len, NULL); return g_ptr_array_index (shorthand->subproperties, property); }
static void transition_info_add (TransitionInfo infos[GTK_CSS_PROPERTY_N_PROPERTIES], GtkStyleProperty *property, guint index) { if (property == NULL) { guint i; for (i = 0; i < _gtk_css_style_property_get_n_properties (); i++) { GtkCssStyleProperty *prop = _gtk_css_style_property_lookup_by_id (i); transition_info_add (infos, GTK_STYLE_PROPERTY (prop), index); } } else if (GTK_IS_CSS_SHORTHAND_PROPERTY (property)) { GtkCssShorthandProperty *shorthand = GTK_CSS_SHORTHAND_PROPERTY (property); guint i; for (i = 0; i < _gtk_css_shorthand_property_get_n_subproperties (shorthand); i++) { GtkCssStyleProperty *prop = _gtk_css_shorthand_property_get_subproperty (shorthand, i); transition_info_add (infos, GTK_STYLE_PROPERTY (prop), index); } } else if (GTK_IS_CSS_STYLE_PROPERTY (property)) { guint id; if (!_gtk_css_style_property_is_animated (GTK_CSS_STYLE_PROPERTY (property))) return; id = _gtk_css_style_property_get_id (GTK_CSS_STYLE_PROPERTY (property)); g_assert (id < GTK_CSS_PROPERTY_N_PROPERTIES); infos[id].index = index; infos[id].pending = TRUE; } else { g_assert_not_reached (); } }