libsysprof-ui: track if color is set

This commit is contained in:
Christian Hergert
2019-05-15 13:41:49 -07:00
parent de4e0d2408
commit 69476aee3c

View File

@ -37,6 +37,7 @@ typedef struct
gchar *text; gchar *text;
SysprofZoomManager *zoom_manager; SysprofZoomManager *zoom_manager;
GdkRGBA color; GdkRGBA color;
guint color_set : 1;
} SysprofCellRendererDurationPrivate; } SysprofCellRendererDurationPrivate;
enum { enum {
@ -66,6 +67,7 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer *renderer,
SysprofCellRendererDuration *self = (SysprofCellRendererDuration *)renderer; SysprofCellRendererDuration *self = (SysprofCellRendererDuration *)renderer;
SysprofCellRendererDurationPrivate *priv = sysprof_cell_renderer_duration_get_instance_private (self); SysprofCellRendererDurationPrivate *priv = sysprof_cell_renderer_duration_get_instance_private (self);
g_autoptr(GString) str = NULL; g_autoptr(GString) str = NULL;
GtkStyleContext *style_context;
gdouble x1, x2; gdouble x1, x2;
GdkRGBA rgba; GdkRGBA rgba;
GdkRectangle r; GdkRectangle r;
@ -79,7 +81,14 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer *renderer,
if (priv->zoom_manager == NULL) if (priv->zoom_manager == NULL)
return; 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); 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; x2 = x1;
r.x = cell_area->x + 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.width = MAX (1.0, x2 - x1);
r.height = cell_area->height / 5.0 * 3.25;
gdk_cairo_rectangle (cr, &r); gdk_cairo_rectangle (cr, &r);
gdk_cairo_set_source_rgba (cr, &rgba); 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); priv->color = *(GdkRGBA *)g_value_get_boxed (value);
else else
gdk_rgba_parse (&priv->color, "#000"); gdk_rgba_parse (&priv->color, "#000");
priv->color_set = !!g_value_get_boolean (value);
break; break;
case PROP_END_TIME: case PROP_END_TIME: