[sysprof] libsysprof-ui: add text property
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] libsysprof-ui: add text property
- Date: Wed, 29 May 2019 22:25:58 +0000 (UTC)
commit f199a7028fd19cf819e9be6140927c1b1ce780c0
Author: Christian Hergert <chergert redhat com>
Date: Mon May 13 20:37:13 2019 -0700
libsysprof-ui: add text property
src/libsysprof-ui/sysprof-cell-renderer-duration.c | 40 ++++++++++++++++++++++
1 file changed, 40 insertions(+)
---
diff --git a/src/libsysprof-ui/sysprof-cell-renderer-duration.c
b/src/libsysprof-ui/sysprof-cell-renderer-duration.c
index 2ab7b89..4f91a52 100644
--- a/src/libsysprof-ui/sysprof-cell-renderer-duration.c
+++ b/src/libsysprof-ui/sysprof-cell-renderer-duration.c
@@ -26,6 +26,7 @@
typedef struct
{
+ gchar *text;
gint64 begin_time;
gint64 end_time;
gint64 zoom_begin;
@@ -36,6 +37,7 @@ enum {
PROP_0,
PROP_BEGIN_TIME,
PROP_END_TIME,
+ PROP_TEXT,
PROP_ZOOM_BEGIN,
PROP_ZOOM_END,
N_PROPS
@@ -92,6 +94,30 @@ sysprof_cell_renderer_duration_render (GtkCellRenderer *renderer,
gdk_cairo_rectangle (cr, &r);
gdk_cairo_set_source_rgba (cr, &rgba);
cairo_fill (cr);
+
+ if (priv->text)
+ {
+ PangoLayout *layout;
+ gint w, h;
+
+ /* Add some spacing before/after */
+ r.x -= 12;
+ r.width += 24;
+
+ layout = gtk_widget_create_pango_layout (widget, priv->text);
+ pango_layout_get_pixel_size (layout, &w, &h);
+
+ if ((r.x - w) >= cell_area->x)
+ cairo_move_to (cr, r.x - w, r.y + ((r.height - h) / 2));
+ else
+ cairo_move_to (cr, r.x + r.width, r.y + ((r.height - h) / 2));
+
+ rgba.alpha = 0.4;
+ gdk_cairo_set_source_rgba (cr, &rgba);
+ pango_cairo_show_layout (cr, layout);
+
+ g_object_unref (layout);
+ }
}
static void
@@ -113,6 +139,10 @@ sysprof_cell_renderer_duration_get_property (GObject *object,
g_value_set_int64 (value, priv->zoom_begin);
break;
+ case PROP_TEXT:
+ g_value_set_string (value, priv->text);
+ break;
+
case PROP_ZOOM_END:
g_value_set_int64 (value, priv->zoom_end);
break;
@@ -145,6 +175,11 @@ sysprof_cell_renderer_duration_set_property (GObject *object,
priv->zoom_begin = g_value_get_int64 (value);
break;
+ case PROP_TEXT:
+ g_free (priv->text);
+ priv->text = g_value_dup_string (value);
+ break;
+
case PROP_ZOOM_END:
priv->zoom_end = g_value_get_int64 (value);
break;
@@ -179,6 +214,11 @@ sysprof_cell_renderer_duration_class_init (SysprofCellRendererDurationClass *kla
G_MININT64, G_MAXINT64, 0,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ properties [PROP_TEXT] =
+ g_param_spec_string ("text", NULL, NULL,
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
properties [PROP_ZOOM_END] =
g_param_spec_int64 ("zoom-end", NULL, NULL,
G_MININT64, G_MAXINT64, 0,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]