[gtk+] color-swatch: add a color-light/color-dark style class for intensity



commit 33e54e45bee92bb6f0da4af9edd4b2e3515f6a2f
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Wed Feb 8 16:35:57 2012 -0500

    color-swatch: add a color-light/color-dark style class for intensity
    
    Themes might want to set different colors on the badge if the displayed
    color is light or dark. Use a style class for this when we set a color
    on the swatch.

 gtk/gtkcolorswatch.c |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index 8e4b38d..d994729 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -612,15 +612,31 @@ void
 gtk_color_swatch_set_rgba (GtkColorSwatch *swatch,
                            const GdkRGBA  *color)
 {
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (GTK_WIDGET (swatch));
+
   if (!swatch->priv->has_color)
-    gtk_drag_source_set (GTK_WIDGET (swatch),
-                         GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
-                         dnd_targets, G_N_ELEMENTS (dnd_targets),
-                         GDK_ACTION_COPY | GDK_ACTION_MOVE);
+    {
+      gtk_drag_source_set (GTK_WIDGET (swatch),
+                           GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
+                           dnd_targets, G_N_ELEMENTS (dnd_targets),
+                           GDK_ACTION_COPY | GDK_ACTION_MOVE);
+    }
+  else
+    {
+      gtk_style_context_remove_class (context, "color-light");
+      gtk_style_context_remove_class (context, "color-dark");
+    }
 
   swatch->priv->has_color = TRUE;
   swatch->priv->color = *color;
 
+  if (INTENSITY (swatch->priv->color.red, swatch->priv->color.green, swatch->priv->color.blue) > 0.5)
+    gtk_style_context_add_class (context, "color-light");
+  else
+    gtk_style_context_add_class (context, "color-dark");
+
   gtk_widget_queue_draw (GTK_WIDGET (swatch));
   g_object_notify (G_OBJECT (swatch), "rgba");
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]