[sysprof] libsysprof-ui: track if color is set



commit 69476aee3cd76588bd90d90a407cafd1d25871d7
Author: Christian Hergert <chergert redhat com>
Date:   Wed May 15 13:41:49 2019 -0700

    libsysprof-ui: track if color is set

 src/libsysprof-ui/sysprof-cell-renderer-duration.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/src/libsysprof-ui/sysprof-cell-renderer-duration.c 
b/src/libsysprof-ui/sysprof-cell-renderer-duration.c
index 9f1bbd4..c904c21 100644
--- a/src/libsysprof-ui/sysprof-cell-renderer-duration.c
+++ b/src/libsysprof-ui/sysprof-cell-renderer-duration.c
@@ -37,6 +37,7 @@ typedef struct
   gchar *text;
   SysprofZoomManager *zoom_manager;
   GdkRGBA color;
+  guint color_set : 1;
 } SysprofCellRendererDurationPrivate;
 
 enum {
@@ -66,6 +67,7 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer      *renderer,
   SysprofCellRendererDuration *self = (SysprofCellRendererDuration *)renderer;
   SysprofCellRendererDurationPrivate *priv = sysprof_cell_renderer_duration_get_instance_private (self);
   g_autoptr(GString) str = NULL;
+  GtkStyleContext *style_context;
   gdouble x1, x2;
   GdkRGBA rgba;
   GdkRectangle r;
@@ -79,7 +81,14 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer      *renderer,
   if (priv->zoom_manager == NULL)
     return;
 
-  rgba = priv->color;
+  style_context = gtk_widget_get_style_context (widget);
+
+  if (priv->color_set)
+    rgba = priv->color;
+  else
+    gtk_style_context_get_color (style_context,
+                                 gtk_style_context_get_state (style_context),
+                                 &rgba);
 
   duration = sysprof_zoom_manager_get_duration_for_width (priv->zoom_manager, bg_area->width);
 
@@ -90,9 +99,9 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer      *renderer,
     x2 = x1;
 
   r.x = cell_area->x + x1;
-  r.y = cell_area->y + (cell_area->height / 5.0);
+  r.height = 10;
+  r.y = cell_area->y + (cell_area->height - r.height) / 2;
   r.width = MAX (1.0, x2 - x1);
-  r.height = cell_area->height / 5.0 * 3.25;
 
   gdk_cairo_rectangle (cr, &r);
   gdk_cairo_set_source_rgba (cr, &rgba);
@@ -295,6 +304,7 @@ sysprof_cell_renderer_duration_set_property (GObject      *object,
         priv->color = *(GdkRGBA *)g_value_get_boxed (value);
       else
         gdk_rgba_parse (&priv->color, "#000");
+      priv->color_set = !!g_value_get_boolean (value);
       break;
 
     case PROP_END_TIME:


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