]> Pileus Git - ~andy/gtk/commitdiff
GtkStyleContext: Add gtk_style_context_lookup_color().
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 3 Aug 2010 18:30:26 +0000 (20:30 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:37:30 +0000 (15:37 +0100)
gtk_style_lookup_color() now uses this function internally.

gtk/gtkstyle.c
gtk/gtkstylecontext.c
gtk/gtkstylecontext.h

index 9a9ccb55b73a5c5fa7eced3b39ed3b29f625b79c..ef6fe3031e359466438134bb7072cd400ce6e79e 100644 (file)
@@ -958,7 +958,6 @@ gtk_style_lookup_color (GtkStyle   *style,
                         GdkColor   *color)
 {
   GtkStylePrivate *priv;
-  GSList *iter;
 
   g_return_val_if_fail (GTK_IS_STYLE (style), FALSE);
   g_return_val_if_fail (color_name != NULL, FALSE);
@@ -966,21 +965,10 @@ gtk_style_lookup_color (GtkStyle   *style,
 
   priv = GTK_STYLE_GET_PRIVATE (style);
 
-  for (iter = priv->color_hashes; iter != NULL; iter = iter->next)
-    {
-      GHashTable *hash    = iter->data;
-      GdkColor   *mapping = g_hash_table_lookup (hash, color_name);
-
-      if (mapping)
-        {
-          color->red = mapping->red;
-          color->green = mapping->green;
-          color->blue = mapping->blue;
-          return TRUE;
-        }
-    }
+  if (!priv->context)
+    return FALSE;
 
-  return FALSE;
+  return gtk_style_context_lookup_color (priv->context, color_name, color);
 }
 
 /**
index 0e7cedb4768032a5daaee676125eaf6843895d77..591094b304278089749edec1222e51c8fe544999 100644 (file)
@@ -1255,6 +1255,27 @@ gtk_style_context_get_direction (GtkStyleContext *context)
   return priv->direction;
 }
 
+gboolean
+gtk_style_context_lookup_color (GtkStyleContext *context,
+                                const gchar     *color_name,
+                                GdkColor        *color)
+{
+  GtkStyleContextPrivate *priv;
+  GtkSymbolicColor *sym_color;
+
+  g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), FALSE);
+  g_return_val_if_fail (color_name != NULL, FALSE);
+  g_return_val_if_fail (color != NULL, FALSE);
+
+  priv = context->priv;
+  sym_color = gtk_style_set_lookup_color (priv->store, color_name);
+
+  if (!sym_color)
+    return FALSE;
+
+  return gtk_symbolic_color_resolve (sym_color, priv->store, color);
+}
+
 /* Paint methods */
 void
 gtk_render_check (GtkStyleContext *context,
index c3a451622575a177ff4b2c2b824715b6ca01d528..133f3573972b2b0d67c95a3da7a98ba74b49c14b 100644 (file)
@@ -118,6 +118,9 @@ void             gtk_style_context_set_direction (GtkStyleContext  *context,
                                                   GtkTextDirection  direction);
 GtkTextDirection gtk_style_context_get_direction (GtkStyleContext  *context);
 
+gboolean gtk_style_context_lookup_color (GtkStyleContext *context,
+                                         const gchar     *color_name,
+                                         GdkColor        *color);
 
 /* Semi-private API */
 const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context,