void _gtk_style_cascade_add_provider (GtkStyleCascade *cascade, GtkStyleProvider *provider, guint priority) { GtkStyleProviderData data; guint i; g_return_if_fail (GTK_IS_STYLE_CASCADE (cascade)); g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider)); g_return_if_fail (GTK_STYLE_PROVIDER (cascade) != provider); data.provider = g_object_ref (provider); data.priority = priority; data.changed_signal_id = g_signal_connect_swapped (provider, "-gtk-private-changed", G_CALLBACK (_gtk_style_provider_private_changed), cascade); /* ensure it gets removed first */ _gtk_style_cascade_remove_provider (cascade, provider); for (i = 0; i < cascade->providers->len; i++) { if (g_array_index (cascade->providers, GtkStyleProviderData, i).priority > priority) break; } g_array_insert_val (cascade->providers, i, data); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (cascade)); }
void _gtk_modifier_style_map_color (GtkModifierStyle *style, const gchar *name, const GdkRGBA *color) { GtkModifierStylePrivate *priv; GtkSymbolicColor *symbolic_color = NULL; g_return_if_fail (GTK_IS_MODIFIER_STYLE (style)); g_return_if_fail (name != NULL); priv = style->priv; G_GNUC_BEGIN_IGNORE_DEPRECATIONS; if (color) symbolic_color = gtk_symbolic_color_new_literal (color); gtk_style_properties_map_color (priv->style, name, symbolic_color); G_GNUC_END_IGNORE_DEPRECATIONS; g_signal_emit (style, signals[CHANGED], 0); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style)); }
void _gtk_style_cascade_set_scale (GtkStyleCascade *cascade, int scale) { gtk_internal_return_if_fail (GTK_IS_STYLE_CASCADE (cascade)); if (cascade->scale == scale) return; cascade->scale = scale; _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (cascade)); }
void _gtk_modifier_style_set_font (GtkModifierStyle *style, const PangoFontDescription *font_desc) { GtkModifierStylePrivate *priv; g_return_if_fail (GTK_IS_MODIFIER_STYLE (style)); priv = style->priv; if (font_desc) gtk_style_properties_set (priv->style, 0, "font", font_desc, NULL); else gtk_style_properties_unset_property (priv->style, "font", 0); g_signal_emit (style, signals[CHANGED], 0); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style)); }
void _gtk_modifier_style_set_color_property (GtkModifierStyle *style, GType widget_type, const gchar *prop_name, const GdkRGBA *color) { GtkModifierStylePrivate *priv; const GdkRGBA *old_color; gchar *str; g_return_if_fail (GTK_IS_MODIFIER_STYLE (style)); g_return_if_fail (g_type_is_a (widget_type, GTK_TYPE_WIDGET)); g_return_if_fail (prop_name != NULL); priv = style->priv; str = g_strdup_printf ("-%s-%s", g_type_name (widget_type), prop_name); old_color = g_hash_table_lookup (priv->color_properties, str); if ((!color && !old_color) || (color && old_color && gdk_rgba_equal (color, old_color))) { g_free (str); return; } if (color) { g_hash_table_insert (priv->color_properties, str, gdk_rgba_copy (color)); } else { g_hash_table_remove (priv->color_properties, str); g_free (str); } g_signal_emit (style, signals[CHANGED], 0); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style)); }
void _gtk_style_cascade_remove_provider (GtkStyleCascade *cascade, GtkStyleProvider *provider) { guint i; g_return_if_fail (GTK_IS_STYLE_CASCADE (cascade)); g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider)); for (i = 0; i < cascade->providers->len; i++) { GtkStyleProviderData *data = &g_array_index (cascade->providers, GtkStyleProviderData, i); if (data->provider == provider) { g_array_remove_index (cascade->providers, i); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (cascade)); break; } } }
static void modifier_style_set_color (GtkModifierStyle *style, const gchar *prop, GtkStateFlags state, const GdkRGBA *color) { GtkModifierStylePrivate *priv; g_return_if_fail (GTK_IS_MODIFIER_STYLE (style)); priv = style->priv; if (color) gtk_style_properties_set (priv->style, state, prop, color, NULL); else gtk_style_properties_unset_property (priv->style, prop, state); g_signal_emit (style, signals[CHANGED], 0); _gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style)); }