diff options
author | Benjamin Otte <otte@redhat.com> | 2012-04-19 03:58:28 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-09-17 20:39:11 +0200 |
commit | e6c951a303aaa67b2b91bc067724fe5d104470a6 (patch) | |
tree | 0b98a9e1eb0c48b4294e2f014c1fba59869d9978 | |
parent | cdbc6f48bbcff68cbdb59fa7e6d32fbc9b6908a2 (diff) | |
download | gtk+-e6c951a303aaa67b2b91bc067724fe5d104470a6.tar.gz |
styleprovider: Add query function for keyframes
-rw-r--r-- | gtk/gtkcssprovider.c | 10 | ||||
-rw-r--r-- | gtk/gtkstylecascade.c | 25 | ||||
-rw-r--r-- | gtk/gtkstyleproviderprivate.c | 17 | ||||
-rw-r--r-- | gtk/gtkstyleproviderprivate.h | 5 |
4 files changed, 57 insertions, 0 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 5526167248..ea56a1b5b3 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1573,6 +1573,15 @@ gtk_css_style_provider_get_color (GtkStyleProviderPrivate *provider, return g_hash_table_lookup (css_provider->priv->symbolic_colors, name); } +static GtkCssKeyframes * +gtk_css_style_provider_get_keyframes (GtkStyleProviderPrivate *provider, + const char *name) +{ + GtkCssProvider *css_provider = GTK_CSS_PROVIDER (provider); + + return g_hash_table_lookup (css_provider->priv->keyframes, name); +} + static void gtk_css_style_provider_lookup (GtkStyleProviderPrivate *provider, const GtkCssMatcher *matcher, @@ -1652,6 +1661,7 @@ static void gtk_css_style_provider_private_iface_init (GtkStyleProviderPrivateInterface *iface) { iface->get_color = gtk_css_style_provider_get_color; + iface->get_keyframes = gtk_css_style_provider_get_keyframes; iface->lookup = gtk_css_style_provider_lookup; iface->get_change = gtk_css_style_provider_get_change; } diff --git a/gtk/gtkstylecascade.c b/gtk/gtkstylecascade.c index 1b8e9f7195..9ccd2f06de 100644 --- a/gtk/gtkstylecascade.c +++ b/gtk/gtkstylecascade.c @@ -172,6 +172,30 @@ gtk_style_cascade_get_color (GtkStyleProviderPrivate *provider, return NULL; } +GtkCssKeyframes * +gtk_style_cascade_get_keyframes (GtkStyleProviderPrivate *provider, + const char *name) +{ + GtkStyleCascade *cascade = GTK_STYLE_CASCADE (provider); + GtkStyleCascadeIter iter; + GtkCssKeyframes *keyframes; + GtkStyleProvider *item; + + for (item = gtk_style_cascade_iter_init (cascade, &iter); + item; + item = gtk_style_cascade_iter_next (cascade, &iter)) + { + if (!GTK_IS_STYLE_PROVIDER_PRIVATE (item)) + continue; + + keyframes = _gtk_style_provider_private_get_keyframes (GTK_STYLE_PROVIDER_PRIVATE (item), name); + if (keyframes) + return keyframes; + } + + return NULL; +} + static void gtk_style_cascade_lookup (GtkStyleProviderPrivate *provider, const GtkCssMatcher *matcher, @@ -230,6 +254,7 @@ static void gtk_style_cascade_provider_private_iface_init (GtkStyleProviderPrivateInterface *iface) { iface->get_color = gtk_style_cascade_get_color; + iface->get_keyframes = gtk_style_cascade_get_keyframes; iface->lookup = gtk_style_cascade_lookup; iface->get_change = gtk_style_cascade_get_change; } diff --git a/gtk/gtkstyleproviderprivate.c b/gtk/gtkstyleproviderprivate.c index c7284da1db..a0b75a9618 100644 --- a/gtk/gtkstyleproviderprivate.c +++ b/gtk/gtkstyleproviderprivate.c @@ -60,6 +60,23 @@ _gtk_style_provider_private_get_color (GtkStyleProviderPrivate *provider, return iface->get_color (provider, name); } +GtkCssKeyframes * +_gtk_style_provider_private_get_keyframes (GtkStyleProviderPrivate *provider, + const char *name) +{ + GtkStyleProviderPrivateInterface *iface; + + g_return_val_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL); + g_return_val_if_fail (name != NULL, NULL); + + iface = GTK_STYLE_PROVIDER_PRIVATE_GET_INTERFACE (provider); + + if (!iface->get_keyframes) + return NULL; + + return iface->get_keyframes (provider, name); +} + void _gtk_style_provider_private_lookup (GtkStyleProviderPrivate *provider, const GtkCssMatcher *matcher, diff --git a/gtk/gtkstyleproviderprivate.h b/gtk/gtkstyleproviderprivate.h index 0a66a8e592..43675d135e 100644 --- a/gtk/gtkstyleproviderprivate.h +++ b/gtk/gtkstyleproviderprivate.h @@ -19,6 +19,7 @@ #define __GTK_STYLE_PROVIDER_PRIVATE_H__ #include <glib-object.h> +#include "gtk/gtkcsskeyframesprivate.h" #include "gtk/gtkcsslookupprivate.h" #include "gtk/gtkcssmatcherprivate.h" #include <gtk/gtkenums.h> @@ -41,6 +42,8 @@ struct _GtkStyleProviderPrivateInterface GtkSymbolicColor * (* get_color) (GtkStyleProviderPrivate *provider, const char *name); + GtkCssKeyframes * (* get_keyframes) (GtkStyleProviderPrivate *provider, + const char *name); void (* lookup) (GtkStyleProviderPrivate *provider, const GtkCssMatcher *matcher, GtkCssLookup *lookup); @@ -55,6 +58,8 @@ GType _gtk_style_provider_private_get_type (void) G_GNUC_C GtkSymbolicColor * _gtk_style_provider_private_get_color (GtkStyleProviderPrivate *provider, const char *name); +GtkCssKeyframes * _gtk_style_provider_private_get_keyframes(GtkStyleProviderPrivate *provider, + const char *name); void _gtk_style_provider_private_lookup (GtkStyleProviderPrivate *provider, const GtkCssMatcher *matcher, GtkCssLookup *lookup); |